implement transition hooks

summon @nateabele