By creating a bucket type per CRDT type at start up. There will be a bucket-type for each top level CRDT Type and buckets of those types are the _only_ place you can store those CRDTs. It has to be a cast iron one-to-one mapping to work, doesn't it? Or is the problem with _naming_ or changing implementation types in later releases?