Generation now works.
Bonus: Additional generic functions