Interactions can be wholly defined by three things: the concrete
Interactor, the concrete
Interactable, and the logic governing their coordination.
Subclasses are responsible for implementing that coordination logic via template methods that operate on the concrete interactor and interactable classes.