First commit.

TODO: Implement a reset method to handle when the direction is changed.