     # information on the parameters it accepts. Beware, this hook
     # is asynchronously wired in, so consult with `async` package.
     # Please be sure invoke the `next` arg to proceed, if relevant.
+    # This implementation sets the Redis connection access handle.
     instance: (kernel, service, next) ->
+        @constructor.REDIS_ENVELOPE ?= -> kernel
+        envelope = this.constructor.REDIS_ENVELOPE
+        envelope = try envelope.apply this, arguments
         return next undefined if _.has service, "redis"
         ack = "Acquire Redis client handle in %s".grey
         sig = => this.emit "redis-ready", @redis or null

    # Once inherited from, the inheritee is not abstract anymore.
    @abstract yes

    # A hook that will be called prior to unregistering the service
    # implementation. Please refer to this prototype signature for
    # information on the parameters it accepts. Beware, this hook
    # is asynchronously wired in, so consult with `async` package.
    # Please be sure invoke the `next` arg to proceed, if relevant.
    unregister: (kernel, router, next) ->
        return next() unless _.isObject kernel.redis
        {host, port, options} = kernel.redis or Object()
        message = "Disconnecting from Redis at %s:%s"
        logger.info message.toString().cyan, host, port
        try @emit "redis-gone", kernel.redis, kernel
        try kernel.emit? "redis-gone", kernel.redis
        try kernel.redis.end(); delete kernel.redis
        next.call this, undefined; return this

    # A hook that will be called prior to registering the service

    # information on the parameters it accepts. Beware, this hook
    # is asynchronously wired in, so consult with `async` package.
    # Please be sure invoke the `next` arg to proceed, if relevant.
    # This implementation open a new Redis connection, if configed.
    register: (kernel, router, next) ->
        @constructor.REDIS_ENVELOPE ?= -> kernel
        envelope = this.constructor.REDIS_ENVELOPE
        envelope = envelope.apply this, arguments
        assert config = nconf.get("redis") or null
        return next() unless _.isObject config or 0
        return next() if _.isObject try envelope.redis
        {host, port, options} = config or new Object()
        assert _.isString(host), "got invalid Redis host"
        assert _.isNumber(port), "git invalid Redis port"
        assert _.isObject(options), "invalid Redis options"
        message = "Connecting to Redis at %s:%s".toString()
        noRedis = "Something has gone wrong, no Redis client"
        warning = "Latest Redis envelope was not a kernel".grey
        assert spawner = redisio.createClient.bind redisio
        logger.info message.toString().red, host, port
        logger.debug warning unless envelope is kernel
        envelope.redis = spawner port, host, options
        assert _.isObject(envelope.redis), noRedis
        kernel.emit "redis-ready", envelope.redis, @
        @emit "redis-ready", envelope.redis, kernel
        next.call this, undefined; return this

    # A hook that will be called prior to instantiating the service
