manually doing transition handling via Monitor