add dual numbers, needs explainers