         transformed =  _.map _.values(vcontexts), transformer
         transformed = _.object _.keys(vcontexts), transformed
         async.parallel transformed, (error, results) =>
-            assert not error, "internval valdation error"
+            assert not error, "internal valdation error"
             errors = _.any _.values(results), _.isObject
             hasRender = _.isFunction @renderValidation
             assert hasRender, "no method to render validation"
             params = [results, request, response, continuation]
             return @renderValidation params... if errors
             return continuation.bind(this)()
+
+    # Given the request with possible validation contexts appended
+    # 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.
+    withValidation: (storage, continuation) ->
+        notStorage = "a #{storage} is not a storage"
+        notContinuation = "a #{continuation} is not function"
+        transformer = (o) -> (c) -> o.run (e) -> c null, e
+        assert _.isFunction(continuation), notContinuation
+        assert _.isObject(storage), notStorage
+        vcontexts = storage.vcontexts or {}
+        transformed =  _.map _.values(vcontexts), transformer
+        transformed = _.object _.keys(vcontexts), transformed
+        async.parallel transformed, (error, results) =>
+            assert not error, "internal valdation error"
+            errors = _.any _.values(results), _.isObject
+            results = _.transform results, (acc, val, key) ->
+                messaged = _.isString val?.message
+                acc[key] = val.message if messaged
+            return continuation.bind(this) errors, results
 
     # Create a validation context for the parameter designated by
     # the `name` and add it to the current request. If the `message`


{Primitive} = require "./primitive"
{Barebones} = require "./skeleton"

# This is an ABC service intended to be used only as a compund. It
# provides a complete validation solution for the framework. The

        return @fail response, params: map

    # Given the request with possible validation contexts appended
    # run all the validator contexts in parallel and wait for the
    # completion. If no validation mistakes found, run continuation.
    # If some mistakes are found, however, run `@renderValidation`.
    validateAndContinue: (request, response, continuation) ->
