Creating Abstract class

Initial file with legacy methods and commenting not complete.
Still need to add all other classes and tidy.