Refactor strategies to allow for nicer syntax on adding a new strategy.
Flesh out comments on the various components.