logging is optional. pass logger to driver in modules.