Added dart throwing, refactored differentials.
removed impl due to template arg.