Refactor private functions into classes

The private functions `outIntent` and `overIntent` have been refactored into corresponding classes.

A `bind` utility function has been added.