moved call() outside Evaluator.apply() making it a method of Evaluator