         assert _.isFunction(context.prototype.run), noRun
         assert _.isFunction(context.prototype.chain), noChain
         @$vcontext = context; return this
+
+# This is an ABC service intended to be used only as a compund. It
+# provides a complete validation solution for request parameters. The
+# important difference is this validation system supports asynchronous
+# validators which is what differs it from existent solutions. This
+# validation system is a one-stop-shop for checking all the inputs!
+module.exports.RValidator = class RValidator extends Validator
+
+    # This is a marker that indicates to some internal subsystems
+    # that this class has to be considered abstract and therefore
+    # can not be treated as a complete class implementation. This
+    # mainly is used to exclude or account for abstract classes.
+    @abstract yes
 
     # This method is a default implementation of the renderer that
     # will be called when the validation has failed. You can easily

        created = new context value, message
        vcontexts[name] = created; created

# An abstract base class that inherts from the standard Validator
# and adds specific functionality on top of it. This functionality
# is related to using the validation subsystem from outside of a
# request/response context. Designed to be used by the providers.
module.exports.PValidator = class PValidator extends RValidator

    # This is a marker that indicates to some internal subsystems
    # that this class has to be considered abstract and therefore

    # run all the validator contexts in parallel and wait for the
    # completion. Once the validation has been completed, call the
    # continuation routine and pass the validation results to it.
    validateValues: (storage, continuation) ->
        notStorage = "a #{storage} is not a storage"
        notContinuation = "a #{continuation} is not function"
        transformer = (o) -> (c) -> o.run (e) -> c null, e
