refactoring to make it easier to test stuff