Before revision:  The user may select algorithmic components of the solver by adjusting template parameters without any change to the codebase.
After revision:  The user may select algorithmic components of the solver by adjusting template parameters without any changes to the codebase.