a fair bit of refactoring