I think we should make all of the mutating methods in here package private to be consistent like `moveToPrimary` etc.