Add base implementation

Have a builder to encapsulate creation.
Create the base implementation with the interfaces needed from the client and the remote service.