updated evaluate