refactoring synthesis