# Config objects - **Config classes.** - [`UserConfig`](https://github.com/11ty/eleventy/blob/main/src/UserConfig.js) and [`TemplateConfig`](https://github.com/11ty/eleventy/blob/main/src/TemplateConfig.js) (with [`defaultConfig`](https://github.com/11ty/eleventy/blob/main/src/defaultConfig.js) providing, um, defaults) appear to be the only classes dedicated to configuration (according to their names). - **`eleventyConfig`.** - Many class constructors and methods accept an `eleventyConfig` argument. - In [`Eleventy.initializeConfig()`](https://github.com/11ty/eleventy/blob/main/src/Eleventy.js#L127), this is a `TemplateConfig` instance. - A `TemplateConfig` instance holds a reference to a `UserConfig` instance. If I understand correctly, this is so that a user’s configuration can be tweaked on a template-by-template basis. Is this correct? - **“Config” vs. “options”.** - When a class handles both “config” and “options”, what distinguishes whether a setting falls into one category or another? - **Total configuration awareness®.** - Are there any other types of config? - What makes their roles different? - Which ones override others (and in which circumstances)?