GMT follows the UNIX philosophy so that complex tasks are broken down into smaller and more manageable components. Individual GMT modules are small, easy to maintain, and can be used as any other UNIX tool. GMT was written in the ANSI C programming language (very portable), is POSIX and Y2K compliant, and is independent of hardware constraints (e.g., memory). GMT was deliberately written for command-line usage, not a windows environment, in order to maximize flexibility. We standardized early on to use PostScript output instead of meta-file formats. Apart from the built-in support for coastlines, GMT completely decouples data retrieval from the main GMT programs. GMT uses architecture-independent file formats.