add service interface, implementation and tests