added a doEvaluate() method