# Tool Types
In order to make development of new Tools quick, easy and relatively boilerplate-free, all Tools extend a base class, which provides the functionality required to integrate seamlessly into the cornerstoneTools framework.
Base classes have two types of methods of interest to Tool developers:
@abstractmethods: These methods must be implemented by subclasses.@virtualmethods: These methods have default functionality, but may be overridden by subclasses to alter functionality.
Check the api docs (opens new window) for full documentation of the api.
{% include "./base-tool.md" %}
{% include "./base-annotation-tool.md" %}
{% include "./base-brush-tool.md" %}
{% include "./segmentation-tool.md" %}