Changed Service to a abstract class so we can have a global API mode