#28 refactoring and introducing response interfaces