Crated the classes based on discussion with MJK
Implemented some methods (requires testing)
Merge branch 'master' into local