use extended GCD to compute reciprocals
remove NFData instance from SomeNat type