some major refactoring so I make an AST first and then render it.
one line functions are also parsed now