refactored a bit and removed a generated class into one that is packaged by the framework