     # that it is capable of doing the routing functionality code.
     # If something is wrong, this method will throw an exception.
     # The method is idempotent, ergo no duplication of routables.
-    register: (routable) ->
+    register: (routable, callback) ->
         identify = routable?.constructor?.identify()
         inspected = identify.toString().underline
         [matches, process] = [routable.matches, routable.process]

    # previously registered with the kernel router. This method does
    # modify the router register, ergo does write access to kernel.
    # It will also call hooks on the service, notifying unregister.
    unregister: (routable) ->
        noClass = "broken routable: #{routable}"
        assert routable?.constructor?, noClass
        identify = routable.constructor.identify()

            @emit "unregister", @routable, @kernel
            logger.info removing.yellow, inspected
            @registry.splice index, 1
            return callback routable
        unregister @kernel, this; @

    # The method implements a middleware (for Connect) that looks
