algorithms should take in an evaluator