interaction refactoring