diff --git a/website/docs/configuration/expressions.html.md b/website/docs/configuration/expressions.html.md
index c7f9a4000..560b5c014 100644
--- a/website/docs/configuration/expressions.html.md
+++ b/website/docs/configuration/expressions.html.md
@@ -1,905 +1,123 @@
---
layout: "language"
-page_title: "Expressions - Configuration Language"
+page_title: "Expressions Landing Page - Configuration Language"
sidebar_current: "docs-config-expressions"
-description: |-
- The Terraform language allows the use of expressions to access data exported
- by resources and to transform and combine that data to produce other values.
---
-# Expressions
+# Expressions Landing Page
--> **Note:** This page is about Terraform 0.12 and later. For Terraform 0.11 and
-earlier, see
-[0.11 Configuration Language: Interpolation Syntax](../configuration-0-11/interpolation.html).
+To improve navigation, we've split the old Expressions page into several smaller
+pages.
-_Expressions_ are used to refer to or compute values within a configuration.
-The simplest expressions are just literal values, like `"hello"` or `5`,
-but the Terraform language also allows more complex expressions such as
-references to data exported by resources, arithmetic, conditional evaluation,
-and a number of built-in functions.
+
+
+
+
+
-Expressions can be used in a number of places in the Terraform language,
-but some contexts limit which expression constructs are allowed,
-such as requiring a literal value of a particular type or forbidding
-[references to resource attributes](/docs/configuration/expressions.html#references-to-resource-attributes).
-Each language feature's documentation describes any restrictions it places on expressions.
+## Types and Values, Literal Expressions, Indices and Attributes
-You can experiment with the behavior of Terraform's expressions from
-the Terraform expression console, by running
-[the `terraform console` command](/docs/commands/console.html).
+Terraform's types are `string`, `number`, `bool`, `list`, `tuple`, `map`,
+`object`, and `null`.
-The rest of this page describes all of the features of Terraform's
-expression syntax.
+This information has moved to
+[Types and Values](/docs/configuration/expressions/types.html).
-## Types and Values
+
+
+
+
+
+
-The result of an expression is a _value_. All values have a _type_, which
-dictates where that value can be used and what transformations can be
-applied to it.
+## References to Named Values (Resource Attributes, Variables, etc.)
-The Terraform language uses the following types for its values:
+You can refer to certain values by name, like `var.some_variable` or
+`aws_instance.example.ami`.
-* `string`: a sequence of Unicode characters representing some text, like
- `"hello"`.
-* `number`: a numeric value. The `number` type can represent both whole
- numbers like `15` and fractional values like `6.283185`.
-* `bool`: either `true` or `false`. `bool` values can be used in conditional
- logic.
-* `list` (or `tuple`): a sequence of values, like
- `["us-west-1a", "us-west-1c"]`. Elements in a list or tuple are identified by
- consecutive whole numbers, starting with zero.
-* `map` (or `object`): a group of values identified by named labels, like
- `{name = "Mabel", age = 52}`.
+This information has moved to
+[References to Values](/docs/configuration/expressions/references.html).
-Strings, numbers, and bools are sometimes called _primitive types._ Lists/tuples and maps/objects are sometimes called _complex types,_ _structural types,_ or _collection types._
-
-Finally, there is one special value that has _no_ type:
-
-* `null`: a value that represents _absence_ or _omission._ If you set an
- argument of a resource or module to `null`, Terraform behaves as though you
- had completely omitted it — it will use the argument's default value if it has
- one, or raise an error if the argument is mandatory. `null` is most useful in
- conditional expressions, so you can dynamically omit an argument if a
- condition isn't met.
-
-### Advanced Type Details
-
-In most situations, lists and tuples behave identically, as do maps and objects.
-Whenever the distinction isn't relevant, the Terraform documentation uses each
-pair of terms interchangeably (with a historical preference for "list" and
-"map").
-
-However, module authors and provider developers should understand the
-differences between these similar types (and the related `set` type), since they
-offer different ways to restrict the allowed values for input variables and
-resource arguments.
-
-For complete details about these types (and an explanation of why the difference
-usually doesn't matter), see [Type Constraints](./types.html).
-
-### Type Conversion
-
-Expressions are most often used to set values for the arguments of resources and
-child modules. In these cases, the argument has an expected type and the given
-expression must produce a value of that type.
-
-Where possible, Terraform automatically converts values from one type to
-another in order to produce the expected type. If this isn't possible, Terraform
-will produce a type mismatch error and you must update the configuration with a
-more suitable expression.
-
-Terraform automatically converts number and bool values to strings when needed.
-It also converts strings to numbers or bools, as long as the string contains a
-valid representation of a number or bool value.
-
-* `true` converts to `"true"`, and vice-versa
-* `false` converts to `"false"`, and vice-versa
-* `15` converts to `"15"`, and vice-versa
-
-## Literal Expressions
-
-A _literal expression_ is an expression that directly represents a particular
-constant value. Terraform has a literal expression syntax for each of the value
-types described above:
-
-* Strings are usually represented by a double-quoted sequence of Unicode
- characters, `"like this"`. There is also a "heredoc" syntax for more complex
- strings. String literals are the most complex kind of literal expression in
- Terraform, and have additional documentation on this page:
- * See [String Literals](#string-literals) below for information about escape
- sequences and the heredoc syntax.
- * See [String Templates](#string-templates) below for information about
- interpolation and template directives.
-* Numbers are represented by unquoted sequences of digits with or without a
- decimal point, like `15` or `6.283185`.
-* Bools are represented by the unquoted symbols `true` and `false`.
-* The null value is represented by the unquoted symbol `null`.
-* Lists/tuples are represented by a pair of square brackets containing a
- comma-separated sequence of values, like `["a", 15, true]`.
-
- List literals can be split into multiple lines for readability, but always
- require a comma between values. A comma after the final value is allowed,
- but not required. Values in a list can be arbitrary expressions.
-* Maps/objects are represented by a pair of curly braces containing a series of
- ` = ` pairs:
-
- ```hcl
- {
- name = "John"
- age = 52
- }
- ```
-
- Key/value pairs can be separated by either a comma or a line break. Values
- can be arbitrary expressions. Keys are strings; they can be left unquoted if
- they are a valid [identifier](./syntax.html#identifiers), but must be quoted
- otherwise. You can use a non-literal expression as a key by wrapping it in
- parentheses, like `(var.business_unit_tag_name) = "SRE"`.
-
-## Indices and Attributes
-
-[inpage-index]: #indices-and-attributes
-
-Elements of list/tuple and map/object values can be accessed using
-the square-bracket index notation, like `local.list[3]`. The expression within
-the brackets must be a whole number for list and tuple values or a string
-for map and object values.
-
-Map/object attributes with names that are valid identifiers can also be accessed
-using the dot-separated attribute notation, like `local.object.attrname`.
-In cases where a map might contain arbitrary user-specified keys, we recommend
-using only the square-bracket index notation (`local.map["keyname"]`).
-
-## References to Named Values
-
-Terraform makes several kinds of named values available. Each of these names is
-an expression that references the associated value; you can use them as
-standalone expressions, or combine them with other expressions to compute new
-values.
-
-The following named values are available:
-
-* `.` is an object representing a
- [managed resource](./resources.html) of the given type
- and name. The attributes of the resource can be accessed using
- [dot or square bracket notation][inpage-index].
-
- Any named value that does not match another pattern listed below
- will be interpreted by Terraform as a reference to a managed resource.
-
- If the resource has the `count` argument set, the value of this expression
- is a _list_ of objects representing its instances.
-
- If the resource has the `for_each` argument set, the value of this expression
- is a _map_ of objects representing its instances.
-
- For more information, see
- [references to resource attributes](#references-to-resource-attributes) below.
-* `var.` is the value of the
- [input variable](./variables.html) of the given name.
-* `local.` is the value of the
- [local value](./locals.html) of the given name.
-* `module..