Broke out functionality and tests into additional classes.