How to make new tools

The best is to derive from existing tools, and redefine only what you don't like.

Tool state