using a builder

* the builder prepares the needed config and creates a client
* the client can depend on the inserted dependencies and is much simpler