Initial Cleanup
Created GenerationType annotation. Changed the Factory to read from Annotation.
Removed notNull
General cleanup
Merge branch 'cleanup'