Handle output path correctly
Group bindings by purposes and separate modules by newlines
Desugar fun blocks and fix an exception