complete refactoring of the terms into 3 things: one predicts cell values, one computes error, and one computes gradients. Allows evaluation to be flexible, a number of simple evaluators added