more documentation
slightly simpler requirements
more documentation, better names, factored out requireOption and configureAndConnect