Transactional lookups

Fix prefactory key collision issues when a key is overridden, by maintaining the key/value lookup pairs transactionally alongside the data they reference.