quite a bit of refactoring