Adapter Interface

* added adapter interface
* refactored adapter creation
* added test for invalid adapter type