       @bind(
         'refresh change'
         =>
-          for key, callbackSingle of @SUBSCRIPTION_COLLECTION
-            callbackSingle()
+          for key, callback of @SUBSCRIPTION_COLLECTION
+            callback()
       )
 
       # trigger deleteAll() and fetch() on network notify

        events
        =>
          @deleteAll()
#          callbacks = =>
#            for key, callbackSingle of @SUBSCRIPTION_COLLECTION
#              callbackSingle()
#          @one 'refresh', (collection) =>
#            callbacks(collection)
          @fetch()

        'Collection::Subscribe::' + @className
      )


    key = @className + '-' + Math.floor( Math.random() * 99999 )
    @SUBSCRIPTION_COLLECTION[key] = callback

    return key

  subscribe: (callback) ->

    # init bind
    if !App[ @constructor.className ]['SUBSCRIPTION_ITEM']
      App[ @constructor.className ]['SUBSCRIPTION_ITEM'] = {}

      events = "#{@constructor.className}:created #{@constructor.className}:updated #{@constructor.className}:destroy"
      App.Event.bind(
        events
        (record) =>
          if @id.toString() is record.id.toString()
            for key, callback of App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ @id ]
              App[ @constructor.className ].retrieve( @id, callback, true )
        'Item::Subscribe::' + @constructor.className
      )

    # remember record id and callback
    if !App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ @id ]
      App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ @id ] = {}
    key = @constructor.className + '-' + Math.floor( Math.random() * 99999 )
    App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ @id ][key] = callback
    return key

  @unsubscribe: (data) ->
