If you implement the suggestion above (to move AgentEmitterComponent::emitAgent into the AgentEmitterSystem), it's probably best to create a new system that handles the timed agent emission. Or make the TimedAgentEmitterComponent optional for the filter by wrapping it like this: `Optional<TimedAgentEmitterComponent>`.

Oh, and feel free to split all the agent stuff up into multiple files. That all agent systems were defined in one source file was just for historic reasons, when they were still small.