Refactored stuff, and split up the subsystems with current specifications.