Support#/204 test coverage

This branch contains all of the code that maximises our test coverage. It may need reviewing, but if you see that all tests pass, it should be pretty safe.