 
       channels = {}
 
-      request =(kiteName, method, args, onMethod='on')-> 
-        callbackId = listenerId++
+      scrub = (method, args, callback) ->
         scrubber = new Scrubber localStore
         scrubber.scrub args, =>
           scrubbed = scrubber.toDnodeProtocol()
           scrubbed.method or= method
-          fetchChannel kiteName, (channel)=>
+          callback scrubbed
+
+      request =(kiteName, method, args, onMethod='on')-> 
+        scrub method, args, (scrubbed) ->
+          fetchChannel kiteName, (channel)->
             channel[onMethod](
               "reply-client-message",
               messageHandler.bind null, kiteName
             )
+            channel.emit "client-message", JSON.stringify(scrubbed)
+
+      response = (kiteName, method, args) ->
+        scrub method, args, (scrubbed) ->
+          fetchChannel kiteName, (channel)=>
             channel.emit "client-message", JSON.stringify(scrubbed)
 
       messageHandler =(kiteName, args) ->

        unscrubbed = scrubber.unscrub args, (callbackId)->
          unless remoteStore.has callbackId
            remoteStore.add callbackId, ->
              request kiteName, callbackId, [].slice.call arguments
          remoteStore.get callbackId
        callback.apply @, unscrubbed


        scrubber = new Scrubber localStore
        args = [options, callback]
        {method} = options
        delete options.autoCull
        request options.kiteName, method, args
