better number parsing