Generics

TODO

Generic constraints

TODO