To avoid the need to specify "near" and "far" on numerous pointers, data structures, and functions, compilers also support "memory models" which specify default pointer sizes. The "tiny" (max 64K), "small" (max 128K), "compact" (data > 64K), "medium" (code > 64K), "large" (code,data > 64K), and "huge" (individual arrays > 64K) models cover practical combinations of near, far, and huge pointers for code and data. The "tiny" model means that code and data are shared in a single segment, just as in most 8-bit based processors, and can be used to build ".com" files for instance. Precompiled libraries often come in several versions compiled for different memory models.