public function getOrCreateParentVariation($result, $listing, $account)
 {
     $lm = new WPLA_ListingsModel();
     $parent_asin = $result->product->ASIN;
     WPLA()->logger->info("processing parent variation {$parent_asin}");
     // find existing parent variation listing
     if ($parent_listing = $lm->getItemByASIN($parent_asin)) {
         WPLA()->logger->info("Found existing parent for ASIN {$parent_asin}");
         $this->message = "Found existing variable parent listing for ASIN {$parent_asin}";
         $parent_id = $parent_listing->id;
     } else {
         // create parent listing
         $data = array('asin' => $parent_asin, 'sku' => $parent_asin, 'product_type' => 'variable', 'source' => $listing['source'], 'status' => 'matched', 'account_id' => $account->id);
         $parent_id = $lm->insertListingData($data);
         // update listing attributes
         $lm->updateItemAttributes($result->product->AttributeSets->ItemAttributes, $parent_id);
         $parent_listing = $lm->getItem($parent_id, OBJECT);
         // load listing object
         WPLA()->logger->info("Created new parent for ASIN {$parent_asin} with ID {$parent_id}");
         $this->message = "Created new variable product for ASIN {$parent_asin} with ID {$parent_id}";
     }
     return $parent_listing;
 }