Rewrote the evaluator with rudimentary object/action tree semantics