 
         diff = _.difference oldIds, newIds
         if diff and not _.isEmpty diff
-          self.collections[collectionName].isMapping = true
-          self.collections[collectionName].collection.remove
+          @collections[collectionName].isMapping = true
+          @collections[collectionName].collection.remove
             _id: 
               $in: diff
           ,
-           () ->
-            self.collections[collectionName].isMapping = false
-
-        self.subscriptions[subsName] = []
-
-      _.each data[link], (doc) ->
-        self.collections[collectionName].isMapping = true
+           () =>
+            @collections[collectionName].isMapping = false
+
+        @subscriptions[subsName] = []
+
+      _.each data[link], (doc) =>
+        @collections[collectionName].isMapping = true
 
         if not doc._id
           _id = Random.id()

    check opts, Match.Optional Match.OneOf Object, null
    check link, String

    self = @
    isReady = new ReactiveVar false
    throw new Meteor.Error '404', "[Meteor.neo4j.subscribe] | Collection: #{collectionName} not found! | Use Meteor.neo4j.collection(#{collectionName}) to create collection" if not Meteor.neo4j.collections[collectionName]

    @subscriptions["#{collectionName}_#{name}"] = []

    @call "Neo4jReactiveMethod_#{collectionName}_#{name}", opts, collectionName, link, (error, data) ->
      throw new Meteor.Error '500', '[Meteor.neo4j.subscribe] | Error: ' + error.toString() if error
      self.mapLink collectionName, data, link, "#{collectionName}_#{name}"
      isReady.set true

    return {

      else if @allowClientQuery == true and Meteor.isClient
        Meteor.call 'Neo4jRun', uid, query, opts, new Date, (error) ->
          if error
            throw new Meteor.Error '500', 'Exception on calling method [Neo4jRun]', {error, query, opts}
        Meteor.neo4j.uids.set _.union(Meteor.neo4j.uids.get(), [ uid ])
    @cache.get uid, callback

