note how numeric types and sread are implemented