A tool activity is a sort of "sub-tool" used to break apart functionality in tools that provide support for different multi-interaction subtasks. It is meant to limit the sprawl of switch statements in the base tool, to allow subtasks to be designed similar to how a tool might be designed, and to ease extendability.