Classy shit
Ensuring correctness of type lenses and smart constructors
Merge branch 'classy' into develop