       for componentRef in _.values(componentMap)
         componentModel = @supermodel.getModelByOriginalAndMajorVersion(
           LevelComponent, componentRef.original, componentRef.majorVersion)
+        if not componentModel?.loaded
+          @loadComponents([componentRef])
+          continue
         for dependency in componentModel?.get('dependencies') or []
           if not componentMap[dependency.original]
             component = @supermodel.getModelByOriginalAndMajorVersion(
               LevelComponent, dependency.original, dependency.majorVersion)
-            if not component
+            if not component?.loaded
               @loadComponents([dependency])
               # will run onComponentsAdded once more when the model loads
             else

    @reportChanges()

  updateComponentsList: ->
    @componentsTreema?.set('/', $.extend(true, [], @components))

  onComponentsAdded: ->
    return unless @componentsTreema


  loadComponents: (components) ->
    for componentRef in components
      # just to handle if ever somehow the same component is loaded twice, through bad data and alike
      continue if @originalsLoaded[componentRef.original]
      @originalsLoaded[componentRef.original] = componentRef.original

      levelComponent = new LevelComponent(componentRef)
      url = "/db/level.component/#{componentRef.original}/version/#{componentRef.majorVersion}"
      levelComponent.setURL(url)
