big simplifications in diff engines; still some leftovers to refactor