Very helpful thank you! One last thing, if the animation direction is 'reversed' once, the animation will continue to run and the controller wont invalidate. I think the animationController is failing to invalidate if the speed is opposite the speed it was when the animationController was initiated - any suggestions on checking for this?