         assert _.isString(description), noDescription
         assert _.isString(identify), noIdentify
         assert _.isString(typeable), noTypeable
-        @emit "argument", arguments...
-        (@$argument ?= []).push
+        @emit.call this, "argument", arguments...
+        return (@$argument ?= []).push
             description: description
             identify: identify
             typeable: typeable

        return @$schemas if arguments.length is 0
        noSchemas = "the schemas should be a object"
        assert _.isObject(schemas), noSchemas
        _.extend (@$schemas ?= {}), schemas
        @emit "schemas", arguments...

    # Either get or set the version information of the method that
    # is being described by this document. If you do no supply any

        return @$inputs if arguments.length is 0
        noInputs = "The inputs is not a string"
        assert _.isString inputs, noInputs
        @emit.call this, "inputs", arguments...
        return @$inputs = inputs.toString()

    # Either get or set the outputs of the method that is being
    # described by this document. If you do not supply outputs
