refactoring and reworking interfaces