##
17.1 File Requirements

The codeTemplate class contains not only the Cheetah infrastructure, but also some convenience methods useful in all templates. More methods may be added if it's generally agreed among Cheetah developers that the method is sufficiently useful to all types of templates, or at least to all types of HTML-output templates. If a method is too long to fit into `Template` - especially if it has helper methods - put it in a mixin class under `Cheetah.Utils` and inherit it.

Routines for a specific problem domain should be put under `Cheetah.Tools`, so that it doesn't clutter the namespace unless the user asks for it.

Remember: `Cheetah.Utils` is for objects required by any part of Cheetah's core. `Cheetah.Tools` is for completely optional objects. It should always be possible to delete `Cheetah.Tools` without breaking Cheetah's core services.

If a core method needs to look up an attribute defined under `Cheetah.Tools`, it should use `hasattr()` and gracefully provide a default if the attribute does not exist (meaning the user has not imported that subsystem).