             errors = _.any _.values(results), _.isObject
             return continuation.bind(this) errors, results
 
-    # Create a validation context for the values designated by
+    # Create new validation context for the values designated by
     # the `name` and add it to the supplied storage. If the `message`
     # is supplied then it will be forced as an error messages. Use
     # this method to automatically obtain contex for the parameter.
     # This variation of method is intended to work on any storage.
     value: (storage, name, message) ->
+        assert _.notEmpty(name), "invalid name"
         context = @constructor.validationContext?()
         context = Primitive unless _.isObject context
         assert storage; value = storage[name]
-        vcontexts = (storage.vcontexts ?= {})
+        vcontexts = storage.vcontexts ?= {}
         return obtain if obtain = vcontexts[name]
         created = new context value, message
         vcontexts[name] = created; created

# provides the internal abstractions that are necessary for validators.
# This class is not a complete implementation, it just servres as the
# boilerplate for the actual validators implementation. Those actually
# follow belows, please refer to each one for more specific information.
module.exports.Validator = class Validator extends Barebones

    # This is a marker that indicates to some internal subsystems

    # 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, `@renderParamValidation`.
    validateParameters: (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.params, (error, results) ->
            params = [results, request, response, continuation]
            return @renderParamValidation params... if error
            return continuation.bind(this) results
