refactoring desugar