

- get NAF working.
  - the strategy is an up/down motion:
    - walk from top down to figure out which ones need to be rewritten.
    - rewrite from bottom up to group each node by highest variable

- do i really need separate types for everything or could i just use an AST?
