implement basic evaluator