treat hashes as objects, with arbitrary accessors/mutators
