Add the nonsingular reductions

Just one possible formulation, I hope it compiles the first time.