Abstracts tool selection. See commit message bodies for some additional thoughts on what was wrong.
@ml5717 Please review.