refactoring to separate out services for the funky parts