Abstracted all classes. Implementation working on local machine