Refactored the whole thing. Have no idea if it became more readable. Close #52.
Merge pull request #53 from codingteam/feature/subsystems-52

Big refactoring.