Re-structured the code and renamed the classes to a meaningfull and easily understandable manner.

@author: pgajjar
@reviewed: pgajjar
@approved: pgajjar