Refactored, updated README, updated UML.