A shared workspace needs roles, not a crowd of generalists.

Each class has a defined responsibility, and the shared workspace connects their work into one continuous execution loop.