     @onThangsChanged = _.debounce(@onThangsChanged)
 
     $(document).bind 'contextmenu', @preventDefaultContextMenu
+
+  onThangCollectionSynced: (collection) ->
+    return if not collection?.models?.length
+    getMore = collection.models.length is PAGE_SIZE
+    @thangTypes.add(collection.models)
+    if getMore
+      collection.skip += PAGE_SIZE
+      collection.fetch({data: {skip: collection.skip, limit: PAGE_SIZE}})
+      @supermodel.loadCollection(collection, 'thangs')
+      @listenToOnce(collection, 'sync', @onThangCollectionSynced)
 
   getRenderData: (context={}) ->
     context = super(context)

GameUIState = require 'models/GameUIState'
GenerateTerrainModal = require 'views/editor/level/modals/GenerateTerrainModal'

# Moving the screen while dragging thangs constants
MOVE_MARGIN = 0.15
MOVE_SPEED = 13

# Let us place these on top of other Thangs
overlappableThangTypeNames = ['Torch', 'Chains', 'Bird', 'Cloud 1', 'Cloud 2', 'Cloud 3', 'Waterfall', 'Obstacle', 'Electrowall', 'Spike Walls']

    @listenTo(@gameUIState, 'surface:stage-mouse-move', @onStageMouseMove)
    @listenTo(@gameUIState, 'change:selected', @onChangeSelected)

    @thangTypes = new Backbone.Collection()
    thangTypeCollection = new ThangTypeSearchCollection([])
    thangTypeCollection.fetch({data: {limit: PAGE_SIZE}})
    thangTypeCollection.skip = 0
    # should load depended-on Components, too
    @supermodel.loadCollection(thangTypeCollection, 'thangs')
    @listenToOnce(thangTypeCollection, 'sync', @onThangCollectionSynced)

    # just loading all Components for now: https://github.com/codecombat/codecombat/issues/405
    @componentCollection = new LevelComponents([], {saveBackups: true})
    @supermodel.trackRequest(@componentCollection.fetch())
