Initial Code

Writing code in an object oriented way to make it as extensible as
possible