Less caching, more functional.

Change the raw value, get different returns. I think that makes
more sense. Performance differences are probably negligible anyhow.y