         assert headers = request.headers, notParams
         return @value headers, name, message
 
+    # 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, `@renderHeaderValidation`.
+    validateHeaders: (request, response, continuation) ->
+        notRequest = "a #{request} is not a request"
+        notResponse = "a #{response} is not a response"
+        notContinuation = "a #{continuation} is not function"
+        assert _.isFunction(continuation), notContinuation
+        assert _.isObject(response), notResponse
+        assert _.isObject(request), notRequest
+        @validateValues request.headers, (failure, results) ->
+            signature = [results, request, response, continuation]
+            return @renderHeaderValidation signature... if failure
+            return continuation.bind(this) failure, results
+
     # This method is a default implementation of the renderer that
     # will be called when the validation has failed. You can easily
     # override it in either your service or in an external compound.

        assert params = request.params, notParams
        return @value params, name, message

    # This method is a default implementation of the renderer that
    # will be called when the validation has failed. You can easily
    # override it in either your service or in an external compound.

        strings = _.map results, (e) -> e.message
        map = _.object _.keys(results), strings
        return @reject response, params: map

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