Should eventually be an extensible hash object that supports multiple backends.