Tools should accept input from parameters and should (in most cases) produce any output to the pipeline; this approach helps maximize reusability.