Support multiple driver-types and add flexible options hash
refactored new opts hash feature
* added unit tests for opts hash feature