A good few tests, fixes and code added