Commiting Changes

Hello,
Firstly i apologize for taking this long to get down to this.

This is my stab at refactoring the code base, I have not implemented any new features, choosing instead to change some of the existing class structures, data structures and data types used. I am not sure if all the string generation for the reports was expected to be changed from the way it is, I certainly does appear naive and i am sure this is not how it would be in a real application. I eagerly look forward to any comments and/or feedback i can get.

Regards,
Siddharth Subramaniam
+914-414-2839