I sure can explain. I'm programming an interactive websites with a lot of animations.
To do so, I have a global TimelineMax instance that is binded to the user progression through the website. This progression can be the scroll, button clicks, etc - the idea is that it is reusable and can be applied to differents kind of user interactions.
If the progression is binded to the scroll, then the user can go forward and backward. So I never actually explicitly call play or reverse. I'm usually calling `timeline.tweenTo( x )` from a navigation controller.
This navigation controller have no knowledge of the timeline position or progression, it only knows that when it is called, it need to advance (or reverse) by X frame.
Then, each module is registered on the global timeline and is managing its inner state by itself. As so, this module doesn't know when reverse is called because it is completly decoupled.
Does it make sense?