made Peano generic so that computation happens in the type checker