- all services layer objects use factory so they can be overridden for unit testing