Refactoring and adding functionality. Not in a working and testable state as of yet.