Refactored services for ease of testing. Added some unit and semi-integration tests. Added fake and spy classes.