add random value cache, Random
convert submersion classes to use Random methods rather than Math.random