exposed client a different way to allow configuring

past attempts to allow configuration on the client weren't all that good due to the api being somewhat poorly designed. I added an overridable configure method which allow for this.
this is also poor api design as developers might expect that fields are already initialized, which they don't have to be as configure is a method which is indirectly called in the constructor.