What is the reason for keeping the IClientService interface alive? If you keep it, you will continue to have only one implementation (the abstract class) for this interface. You will have a false abstraction, which is known as Header Interface problem, since an Interface is not an abstraction by itself