Simplify evaluator, improve correctness