move nested classes to new package
 added Enums
 added Generics