             when 'signal'
                 @signal(opts.segments[1])
                 opts.cb(undefined, {})
+
+            when 'kernel_info'
+                @kernel_info(cb: opts.cb)
 
             when 'complete'
                 code = opts.query.code

                    delete mesg.metadata
                opts.cb(undefined, mesg)
        @on('shell', f)

        dbg("send the message")
        @_channels.shell.next(message)

    introspect: (opts) =>
        opts = defaults opts,

    get_kernel_data: (cb) =>   # cb(err, kernel_data)  # see below.
        get_kernel_data(cb)

    call: (opts) =>
        opts = defaults opts,
            msg_type : required
            content  : {}
            cb       : required
        @_ensure_running (err) =>
            if err
                opts.cb(err)
            else
                @_call(opts)

    _call: (opts) =>
        message =
            header:
                msg_id   : misc.uuid()
                username : ''
                session  : ''
                msg_type : opts.msg_type
                version  : '5.0'
            content: opts.content

        # setup handling of the results
        if opts.all
