refactor evaluator