The main problem I had with not doing it this way is getting to column family metadata from various places in the code, for example HLog.completeCacheFlush(). This was because I was trying to tag HLogKeys with scope as they are written, and thus far scope information is kept in HCD. However it doesn't have to be done that way. A replicator could look up what to do for each KV according to information in the key. No HLogKey or KV would be tagged with any scoping information. However byte compares for every KV would be more overhead than modifying the write path to carry scope information along.