using the chain of responsibility pattern.
v1.43
Previously, the interactivity timer was implemented in the same file as the runner. This made the file long and the project structure more complicated.