elaboration refactoring