make sure all transitons are done for `expand` before doing `contract`