High Level Generator

Started transferring generator code to a higher level of abstraction to
make function creation and modification easier.