desugaring function definition