Renamed classes to our new gen design :)
Started implementation of decorator pattern, will attempt to make promotion work correctly with decorator