* Huge restructure/rewrite. No real changes to any functionality, just a cleaner and more manageable project.