refactored: Split Layer in a Layer trait and a Lenient (and aStrict) Layer implementation
implemented StrictLayer constraints