updated evaluator and TailRec