Split rules and expressions in two separate trees
Tests naming
Allow variables of upper scope in rules