Refactors and extends the tests to cover where we're up to now (OK, so not exaclty my most shining moment of TDD but we're getting places