add numeric overload to numbers, and a little cleanup; also check more stringently for raw scalars