Refactored to be able to use more than one photo service.