always using .valueOf()