cover by unit test, refactor and add adapters