moved client to it's own module
define options with maybe, so defaults can prevail.