As a developer working on an internal payroll processing application, you're tasked with implementing a component for timesheet submission, triggering various independent steps. Which approach should you take to ensure effective communication with downstream systems and accommodate future step additions?