Added groups and simplified objects

Removed generics and started logic re-factoring to accomidate