The first of some major refactoring
- abstracted Position class
- partially abstracted other classes
- cleaned up code some more
- did lots of things