Simplify the implementation while we're there. The IsNumber trait allows much simpler recursion termination.