implement as_numeric