It's not the same logic though. The `if()` statement in each implementation is different. The axis and direction checks change based on the type of event that is being subscribed to. How should I break this out more?