           deferred.resolve message
     deferred.promise
 
+  ###
+  # Creates asynchronously product in Sphere.
+  #
+  # @param {Object} payload Create product request as JSON
+  # @return {Object} If success returns promise with success message otherwise rejects with error message
+  ###
   _createProduct: (payload) =>
     deferred = Q.defer()
     @rest.POST '/products', payload, (error, response, body) =>

      throw new Error "Could not convert value: '#{utils.pretty value}' to number; mapping: '#{utils.pretty mapping}'"
    number

  _addValue: (product, variant, value, mapping) ->
    target = mapping.target
    type = mapping.type

    else
      @logger.info '[Categories] No categories to import found or undefined. Please check categories input XML.'
      return
    categories = []
    _.each data.Categories.Category, (c) =>
      category = @_convertCategory(c)
      categories.push category
    @logger.info "[Categories] Import candidates count: '#{_.size categories}'"
    @logger.debug "[Categories] Import candidates data: '#{utils.pretty categories}'"
    categories

  ###
  # Builds list of category create object representations.
  #
  # @param {Array} data List of category candidates to import
  # @param {Array} fetchedCategories List of existing categories
  # @return {Array} List of category create representations
  ###
  _buildCategoryCreates: (data, fetchedCategories) =>
    creates = []
    _.each data, (c) ->
