       newState["#{resourceKey}#{Utils.capitalize @metaKey}"] = resources[@metaKey]
 
     @setState newState
+
+
+  startPollingBoundResources: =>
+    for sub in @boundResources
+      do (sub) =>
+        if sub.eventName in ['fetch', 'reset']
+          @listenTo sub.store, sub.eventName, sub.callback ? @setStateFromStore
+          sub.store.startPolling sub.options
+
+
+  startListeningToBoundResources: =>
+    for sub in @boundResources
+      do (sub) =>
+        # ensure local creates/updates are synced to the state
+        if sub.eventName in ['reset', 'resetonce']
+          @listenTo sub.store, 'create', (resource, resources) =>
+            (sub.callback ? @setStateFromStore) resources
+          @listenTo sub.store, 'destroy', (resources) =>
+            (sub.callback ? @setStateFromStore) resources
+          @listenTo sub.store, 'update', (resource, resources) =>
+            (sub.callback ? @setStateFromStore) resources
+
+        # when fetching a single resource, trigger an update when that specific resource is updated
+        if sub.eventName in ['fetch', 'fetchonce']
+          @listenTo sub.store, 'update', (resource, resources) =>
+            if parseInt(resource[sub.store.resourceKey].id) is parseInt(sub.options?.id)
+              (sub.callback ? @setStateFromStore) resource
+
+
+  stopPolling: ->
+    sub.store.stopPolling() for sub in @boundResources
 
 
   stopListeningToBoundResources: =>

      @stopListening sub.store, 'update'


  startPollingBoundResources: =>
    for sub in @boundResources
      do (sub) =>
        if sub.eventName in ['fetch', 'reset']
          @listenTo sub.store, sub.eventName, sub.callback ? @setStateFromStore
          sub.store.startPolling sub.options
        # ensure local creates/updates are synced to the state
        if sub.eventName in ['reset', 'resetonce']
          @listenTo sub.store, 'create', (resource, resources) =>
            (sub.callback ? @setStateFromStore) resources
          @listenTo sub.store, 'destroy', (resources) =>
            (sub.callback ? @setStateFromStore) resources

        # always listen for updates
        @listenTo sub.store, 'update', (resource, resources) =>
          if parseInt(resource[sub.store.resourceKey].id) is parseInt(sub.options?.id)
            (sub.callback ? @setStateFromStore) resource


  stopPolling: ->
    sub.store.stopPolling() for sub in @boundResources


  render: ->
    <div/>


    RSVP.all(requests)
      .then(@setStateFromStore)
      .then(@startPollingBoundResources)
      .then(@startListeningToBoundResources)
      .then(@resourcesDidLoad)


