A bunch of refactoring. Next is to rewrite the function call parser because it's shit and broken (see examples/expr.synt)