diff --git a/docs.json b/docs.json
index f922175252..9501ca4f99 100644
--- a/docs.json
+++ b/docs.json
@@ -665,10 +665,6 @@
"title": "Configuring Tools",
"sources": [{
"type": "markdown",
- "url": "https://github.com/ARMmbed/Handbook/blob/new_engine/docs/tools/config_system.md"
- },
- {
- "type": "markdown",
"url": "https://github.com/ARMmbed/Handbook/blob/new_engine/docs/tools/bootloader.md"
},
{
diff --git a/docs/reference/configuration/Connectivity.md b/docs/reference/configuration/Connectivity.md
index 87a46cadca..3a1ae19a2b 100644
--- a/docs/reference/configuration/Connectivity.md
+++ b/docs/reference/configuration/Connectivity.md
@@ -1,7 +1,7 @@
Connectivity
-You can configure various parameters using either C++ APIs or the Arm Mbed configuration system. Below are the parameters you can configure using the Mbed configuration system:
+You can configure various parameters using either C++ APIs or the Arm Mbed configuration system. The following is the complete list of connectivity configuration parameters, as generated by `mbed compile --config -v`. Please see [the configuration system documentation](/docs/development/reference/configuration.html) for details on how you may use or override these settings.
```
Configuration parameters
diff --git a/docs/reference/configuration/Drivers.md b/docs/reference/configuration/Drivers.md
index 9c1527450d..4ea1f65bfa 100644
--- a/docs/reference/configuration/Drivers.md
+++ b/docs/reference/configuration/Drivers.md
@@ -1,5 +1,7 @@
Drivers
+The following is the complete list of driver configuration parameters, as generated by `mbed compile --config -v`. Please see [the configuration system documentation](/docs/development/reference/configuration.html) for details on how you may use or override these settings.
+
```
Configuration parameters
------------------------
diff --git a/docs/reference/configuration/Platform.md b/docs/reference/configuration/Platform.md
index 0e16c80728..8562352350 100644
--- a/docs/reference/configuration/Platform.md
+++ b/docs/reference/configuration/Platform.md
@@ -1,5 +1,7 @@
+The following is the complete list of platform configuration parameters, as generated by `mbed compile --config -v`. Please see [the configuration system documentation](/docs/development/reference/configuration.html) for details on how you may use or override these settings.
+
```
Configuration parameters
------------------------
diff --git a/docs/reference/configuration/RTOS.md b/docs/reference/configuration/RTOS.md
index 915e0d4d9d..be5cd380bf 100644
--- a/docs/reference/configuration/RTOS.md
+++ b/docs/reference/configuration/RTOS.md
@@ -8,6 +8,9 @@ All threads in Mbed OS share a global heap. By default, mbed OS dynamically allo
By default, there are four threads running after boot: the ISR/scheduler thread, the idle thread, the timer thread and the main application thread. Combined, the idle thread, timer thread and ISR/scheduler thread consume 2 kilobytes of RAM. The user cannot modify these. You can expand or reduce the size of the main application thread stack by using the Mbed configuration system.
+
+The following is the complete list of RTOS configuration parameters, as generated by `mbed compile --config -v`. Please see [the configuration system documentation](/docs/development/reference/configuration.html) for details on how you may use or override these settings.
+
```
Configuration parameters
------------------------
diff --git a/docs/reference/configuration/configuration.md b/docs/reference/configuration/configuration.md
index 621a569dbb..110f1f1d5c 100644
--- a/docs/reference/configuration/configuration.md
+++ b/docs/reference/configuration/configuration.md
@@ -1,48 +1,276 @@
-## Configuration overview
+## The configuration system
-The Arm Mbed configuration system customizes the compile time configuration of Mbed components: targets, libraries and applications.
+The Arm Mbed OS configuration system, a part of the Arm Mbed OS build tools, customizes compile time configuration parameters. Each library may define a number of configuration parameters in its `mbed_lib.json`. `mbed_app.json` may override the values of these configuration parameters. Configuration is defined using [JSON](http://www.json.org/). Some examples of configuration parameters:
-Mbed OS provides some default memory configurations for thread memory allocation. You may want to modify these configurations to better suit your project. You can read about the default configurations and how you can modify them below.
+- The sampling period for a data acquisition application.
+- The default stack size for a newly created OS thread.
+- The receive buffer size of a serial communication library.
+- The flash and RAM memory size of an Mbed target.
-#### Configuring the main thread stack
+The Arm Mbed OS configuration system gathers and interprets the configuration defined in the target in its [target configuration](/docs/development/tools/adding-and-configuring-targets.html), all `mbed_lib.json` files and the `mbed_app.json` file. The configuration system creates a single header file, `mbed_config.h`, that contains all of the defined configuration parameters converted into C preprocessor macros. `mbed compile` places `mbed_config.h` in the build directory, and `mbed export` places it in the application root. `mbed compile` runs the Mbed configuration system before invoking the compiler, and `mbed export` runs the configuration system before creating project files.
-The default stack size of the main application thread is 4 kilobytes. This memory is dynamically allocated from the global heap. You can configure the stack size of the main thread by using the [Mbed config system](/docs/development/reference/configuration.html). To reduce the stack size from 4K to 2K, create an `mbed_app.json` file for your project with the following content:
+**Note:** Throughout this document, "library" means any reusable piece of code within its own directory.
+
+**Note:** In prior releases, the configuration system provided a method for adding custom targets. The Mbed OS tools now look for custom targets in a file named `custom_targets.json` in the root of an application and treat custom targets the same as [Mbed targets](/docs/development/tools/adding-and-configuring-targets.html).
+
+### Examining available configuration parameters
+
+Mbed CLI includes a command for listing and explaining the compile time configuration, `mbed compile --config`. This command prints a summary of configuration parameters, such as:
+
+```
+Configuration parameters
+------------------------
+cellular.random_max_start_delay = 0 (macro name: "MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY")
+cellular.use-apn-lookup = 1 (macro name: "MBED_CONF_CELLULAR_USE_APN_LOOKUP")
+configuration-store.storage_disable = 0 (macro name: "CFSTORE_STORAGE_DISABLE")
+drivers.uart-serial-rxbuf-size = 256 (macro name: "MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE")
+drivers.uart-serial-txbuf-size = 256 (macro name: "MBED_CONF_DRIVERS_UART_SERIAL_TXBUF_SIZE")
+events.present = 1 (macro name: "MBED_CONF_EVENTS_PRESENT")
+events.shared-dispatch-from-application = 0 (macro name: "MBED_CONF_EVENTS_SHARED_DISPATCH_FROM_APPLICATION")
+events.shared-eventsize = 256 (macro name: "MBED_CONF_EVENTS_SHARED_EVENTSIZE")
+events.shared-highprio-eventsize = 256 (macro name: "MBED_CONF_EVENTS_SHARED_HIGHPRIO_EVENTSIZE")
+events.shared-highprio-stacksize = 1024 (macro name: "MBED_CONF_EVENTS_SHARED_HIGHPRIO_STACKSIZE")
+events.shared-stacksize = 1024 (macro name: "MBED_CONF_EVENTS_SHARED_STACKSIZE")
+