Figure 1. Delegate the Duties.
Each class in the strongly typed trace pattern performs a small and distinct set of tasks. Each class is one step in the route trace information takes from your application to listeners that output the trace. You select at application startup (in app.config) or during your debugging session. This delegation of duties maximizes flexibility and reuse.