added abstraction layer for services