 
     @opts.parentTool = tool
 
-    @data(tool.childData())
-      .keys(tool.opts.keys)
-      .selectIds(tool.opts.selectedIds, false)
-      .selectKeys(tool.opts.selectedKeys, false)
-
     @opts.parentTool.on 'keys-received', @keys
     @opts.parentTool.on 'data-received', @data 
     @opts.parentTool.on 'selection', @selectIds
     @opts.parentTool.on 'keys-selection', @selectKeys
     @opts.parentTool.on 'add-filter', @filters
+
+    @data(tool.childData())
+      .keys(tool.opts.keys, false)
+      .selectIds(tool.opts.selectedIds, false)
+      .selectKeys(tool.opts.selectedKeys, false)
+
     @trigger 'bound-to', tool
     @
 

    @

  selectKeys: (keys=[], triggerEvent = true) =>
    console.log 'selecting keys'
    if _.isArray keys
      @opts.selectedKeys = keys
    else

    @trigger 'data-received', @childData()
    @

  keys: (keys=[], triggerEvent = true) =>
    @opts.keys = keys

    if triggerEvent
      @trigger 'keys-received', @opts.keys
    @
    
  selectIds: (ids=[], triggerEvent = true) =>
