refactoring elaboration