add pretty-printing and an assert
make Value[] tolerant, return Null on out of bounds
get detectType on num