     else
       @logger.info '[Categories] No categories to import found or undefined. Please check categories input XML.'
       return
-    categoriesData = data.Categories.Category
-    # get root categories only
-    rootsData = _.filter categoriesData, (c) -> c.ParentId is undefined
-    # get subcategories only
-    subcategoriesData = _.reject categoriesData, (c) -> c.ParentId is undefined
-    # create a list of categories with data prepared for category creation
-    roots = @_getCategoryKeyValuePairs(rootsData)
-    list = [roots]
-    # recursively build categories data
-    @_createSubcategories(roots, subcategoriesData, list)
-    categories = _.flatten list
-    @logger.debug "[Categories] Roots count: '#{_.size roots}'"
+    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
 
-  # TODO: do not use slug as external category id (required Sphere support of custom attributes on category)
+  ###
+  # 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) ->

      @logger.info "[Categories] No category create required."
      null

  _buildCategoryUpdates: (data, fetchedCategories) ->
    updates = []
    _.each data, (c) =>

    else
      @logger.info "[Manufacturers] No update action for manufacturers attribute '#{attributeName}' required."

  ###
  # Builds categories list from import data with all attributes (name, slug, parent <-> child relation) required for category creation or update.
  #
  # @param {Object} data Data to get categories information from
  # @return {Array} List of categories
  ###
  _buildCategories: (data) ->
    @logger.debug "[Categories] data:\n#{utils.pretty data}"
    count = _.size(data.Categories?.Category)
