def extend(validator_cls):
    """
    Extend the given :class:`jsonschema.IValidator` with the Seep layer.

    """

    Validator = jsonschema.validators.extend(
        validator_cls, {
            "properties": _properties_with_defaults(validator_cls),
        }
    )

    class Blueprinter(Validator):
        def instantiate(self, data):
            self.validate(data)
            return data

    return Blueprinter
Extend the given :class:`jsonschema.IValidator` with the Seep layer.