Reorganized code for future changes
Updated readme
Tried to incorporate domain driven design.
Formatted README