Did some reworking of pretty much everything. Still a lot of work and
testing to be done!