#45 #44 Final implementation of generalizations (Still need to add tests).