shouldn't this recurse into sub-hashes and replace the keys of those too?