support non_neg_integers