Abstracting more of the client code into the abstract base