Decouple ImmutableProfileVersion from ProfileVersionState
Decouple ImmutableProfile from ProfileState
Decouple ImmutableContainer from ContainerState
Allow ProfileVersionBuilder to get reused