fix #489 - evaluate() should return a result which can be altered