use a shared_ptr to keep track of DimensionMap stuff