added evaluate method