extract abstract class in client services