using services instead of factories