17.1. Templates for Algorithm Abstraction