Refactoring

more OOP / Event Driven Architecture