merge and abstract service related stuff