Refactored data and controller objects

Changed Controller data and Controller objects from a template design to
a inheritance based design