It's very similar to the way OrientedLattice is handled, except a unique_ptr is used to store the object.