diff --git a/docs/csharp/programming-guide/concepts/linq/filtering-data.md b/docs/csharp/programming-guide/concepts/linq/filtering-data.md
index fa7d374d00aa9..a7914789a1a74 100644
--- a/docs/csharp/programming-guide/concepts/linq/filtering-data.md
+++ b/docs/csharp/programming-guide/concepts/linq/filtering-data.md
@@ -8,7 +8,7 @@ Filtering refers to the operation of restricting the result set to contain only
The following illustration shows the results of filtering a sequence of characters. The predicate for the filtering operation specifies that the character must be 'A'.
- 
+ 
The standard query operator methods that perform selection are listed in the following section.
diff --git a/docs/csharp/programming-guide/concepts/linq/media/linq_filter.png b/docs/csharp/programming-guide/concepts/linq/media/filtering-data/linq-filter-operation.png
similarity index 100%
rename from docs/csharp/programming-guide/concepts/linq/media/linq_filter.png
rename to docs/csharp/programming-guide/concepts/linq/media/filtering-data/linq-filter-operation.png
diff --git a/docs/framework/data/adonet/entity-data-model-inheritance.md b/docs/framework/data/adonet/entity-data-model-inheritance.md
index db6be762777e1..dcc4194304035 100644
--- a/docs/framework/data/adonet/entity-data-model-inheritance.md
+++ b/docs/framework/data/adonet/entity-data-model-inheritance.md
@@ -11,9 +11,10 @@ The Entity Data Model (EDM) supports inheritance for [entity types](../../../../
You cannot build inheritance hierarchies in which a derived type inherits from more than one type. For example, in a conceptual model with a `Book` entity type, you could define derived types `FictionBook` and `NonFictionBook` that each inherit from `Book`. However, you could not then define a type that inherits from both the `FictionBook` and `NonFictionBook` types.
## Example
- The diagram below shows a conceptual model with four entity types: `Book`, `FictionBook`, `Publisher`, and `Author`. The `FictionBook` entity type is a derived type, inheriting from the `Book` entity type. The `FictionBook` type inherits the `ISBN (Key)`, `Title`, and `Revision` properties, and defines an additional property called `Genre`.
+
+The following diagram shows a conceptual model with four entity types: `Book`, `FictionBook`, `Publisher`, and `Author`. The `FictionBook` entity type is a derived type, inheriting from the `Book` entity type. The `FictionBook` type inherits the `ISBN (Key)`, `Title`, and `Revision` properties, and defines an additional property called `Genre`.
- 
+ 
The [ADO.NET Entity Framework](../../../../docs/framework/data/adonet/ef/index.md) uses a domain-specific language (DSL) called conceptual schema definition language ([CSDL](../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md)) to define conceptual models. The following CSDL defines an entity type, `FictionBook`, that inherits from the `Book` type (as in the diagram above):
diff --git a/docs/framework/data/adonet/media/inheritanceexample.gif b/docs/framework/data/adonet/media/entity-data-model-inheritance/entity-type-inheritance.gif
similarity index 100%
rename from docs/framework/data/adonet/media/inheritanceexample.gif
rename to docs/framework/data/adonet/media/entity-data-model-inheritance/entity-type-inheritance.gif
diff --git a/docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md b/docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md
index c077710e4499f..3ee10a0bddae2 100644
--- a/docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md
+++ b/docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md
@@ -120,15 +120,17 @@ ts.TraceEvent(TraceEventType.Warning, 0, "Throwing exception " + "exceptionMessa

List of activities by creation time (left panel) and their nested activities (upper-right panel)
- If the service code throws an exception that causes the client to throw as well (for example, when the client did not get the response to its request), both the service and client warning or error messages occur in the same activity for direct correlation. In the following diagram, the service throws an exception that states "The service refuses to process this request in user code." The client also throws an exception that states "The server was unable to process the request due to an internal error."
+ If the service code throws an exception that causes the client to throw as well (for example, when the client did not get the response to its request), both the service and client warning or error messages occur in the same activity for direct correlation. In the following image, the service throws an exception that states "The service refuses to process this request in user code." The client also throws an exception that states "The server was unable to process the request due to an internal error."
+
+ The following images shows that errors across endpoints for a given request appear in the same activity if the request activity id was propagated:
- 
-Errors across endpoints for a given request appear in the same activity if the request activity id was propagated
+ 
- Double-clicking the Multiply activity on the left panel shows the following graph, with the traces for the Multiply activity for each process involved. We can see a warning first occurred at the service (exception thrown), which is followed by warnings and errors on the client because the request could not be processed. Therefore, we can imply the causal error relationship between endpoints and derive the root cause of the error.
+ Double-clicking the Multiply activity on the left panel shows the following graph, with the traces for the Multiply activity for each process involved. We can see a warning first occurred at the service (exception thrown), which is followed by warnings and errors on the client because the request could not be processed. Therefore, we can imply the causal error relationship between endpoints and derive the root cause of the error.
+
+ The following image shows a graph view of error correlation:
- 
-Graph view of error correlation
+ 
To obtain the previous traces, we set `ActivityTracing` for the user trace sources and `propagateActivity=true` for the `System.ServiceModel` trace source. We did not set `ActivityTracing` for the `System.ServiceModel` trace source to enable user code to user code activity propagation. (When ServiceModel activity tracing is on, the activity ID defined in the client is not propagated all the way to the service user code; Transfers, however, correlate the client and service user code activities to the intermediate WCF activities.)
diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace2.gif b/docs/framework/wcf/diagnostics/tracing/media/emitting-user-code-traces/trace-viewer-endpoint-errors.gif
similarity index 100%
rename from docs/framework/wcf/diagnostics/tracing/media/e2etrace2.gif
rename to docs/framework/wcf/diagnostics/tracing/media/emitting-user-code-traces/trace-viewer-endpoint-errors.gif
diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace3.gif b/docs/framework/wcf/diagnostics/tracing/media/emitting-user-code-traces/trace-viewer-error-correlation.gif
similarity index 100%
rename from docs/framework/wcf/diagnostics/tracing/media/e2etrace3.gif
rename to docs/framework/wcf/diagnostics/tracing/media/emitting-user-code-traces/trace-viewer-error-correlation.gif
diff --git a/docs/framework/wpf/advanced/flow-document-overview.md b/docs/framework/wpf/advanced/flow-document-overview.md
index 1e1f45fb36e89..db70408b1ff71 100644
--- a/docs/framework/wpf/advanced/flow-document-overview.md
+++ b/docs/framework/wpf/advanced/flow-document-overview.md
@@ -122,9 +122,9 @@ Flow documents are designed to optimize viewing and readability. Rather than bei
[!code-xaml[SpanSnippets#_BlockUIXAML](~/samples/snippets/csharp/VS_Snippets_Wpf/SpanSnippets/CSharp/Window1.xaml#_blockuixaml)]
- The following figure shows how this example renders.
+ The following figure shows how this example renders:
- 
+ 
**List**
diff --git a/docs/framework/wpf/advanced/media/blockuicontainer.png b/docs/framework/wpf/advanced/media/flow-document-overview/embedded-blockuicontainer.png
similarity index 100%
rename from docs/framework/wpf/advanced/media/blockuicontainer.png
rename to docs/framework/wpf/advanced/media/flow-document-overview/embedded-blockuicontainer.png
diff --git a/docs/framework/wpf/advanced/media/shadowtext08.png b/docs/framework/wpf/advanced/media/shadowtext08.png
deleted file mode 100644
index 2cebb094c1332..0000000000000
Binary files a/docs/framework/wpf/advanced/media/shadowtext08.png and /dev/null differ
diff --git a/docs/fsharp/language-reference/discriminated-unions.md b/docs/fsharp/language-reference/discriminated-unions.md
index 33efbafe9c0c6..9cf207fcaad1c 100644
--- a/docs/fsharp/language-reference/discriminated-unions.md
+++ b/docs/fsharp/language-reference/discriminated-unions.md
@@ -150,7 +150,7 @@ Discriminated unions can be recursive, meaning that the union itself can be incl
In the previous code, `resultSumTree` has the value 10. The following illustration shows the tree structure for `myTree`.
-
+
Discriminated unions work well if the nodes in the tree are heterogeneous. In the following code, the type `Expression` represents the abstract syntax tree of an expression in a simple programming language that supports addition and multiplication of numbers and variables. Some of the union cases are not recursive and represent either numbers (`Number`) or variables (`Variable`). Other cases are recursive, and represent operations (`Add` and `Multiply`), where the operands are also expressions. The `Evaluate` function uses a match expression to recursively process the syntax tree.
diff --git a/docs/fsharp/media/TreeStructureDiagram.png b/docs/fsharp/media/discriminated-unions/tree-structure-mytree.png
similarity index 100%
rename from docs/fsharp/media/TreeStructureDiagram.png
rename to docs/fsharp/media/discriminated-unions/tree-structure-mytree.png
diff --git a/docs/standard/garbage-collection/fundamentals.md b/docs/standard/garbage-collection/fundamentals.md
index e9820bfdc9c5f..6dc069accb9dd 100644
--- a/docs/standard/garbage-collection/fundamentals.md
+++ b/docs/standard/garbage-collection/fundamentals.md
@@ -255,21 +255,19 @@ Concurrent garbage collection
Background garbage collection removes allocation restrictions imposed by concurrent garbage collection, because ephemeral garbage collections can occur during background garbage collection. This means that background garbage collection can remove dead objects in ephemeral generations and can also expand the heap if needed during a generation 1 garbage collection.
- The following illustration shows background garbage collection performed on a separate dedicated thread on a workstation.
-
- 
-Background workstation garbage collection
+The following illustration shows background garbage collection performed on a separate dedicated thread on a workstation:
+ 
+
[Back to top](#top)
## Background server garbage collection
Starting with the .NET Framework 4.5, background server garbage collection is the default mode for server garbage collection. To choose this mode, set the `enabled` attribute of the [\ element](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md) to `true` in the runtime configuration schema. This mode functions similarly to background workstation garbage collection, described in the previous section, but there are a few differences. Background workstation garbage collection uses one dedicated background garbage collection thread, whereas background server garbage collection uses multiple threads, typically a dedicated thread for each logical processor. Unlike the workstation background garbage collection thread, these threads do not time out.
- The following illustration shows background garbage collection performed on a separate dedicated thread on a server.
+ The following illustration shows background garbage collection performed on a separate dedicated thread on a server:
- 
-Background server garbage collection
+ 
## See also
diff --git a/docs/standard/garbage-collection/media/backgroundserver.png b/docs/standard/garbage-collection/media/fundamentals/background-server-garbage-collection.png
similarity index 100%
rename from docs/standard/garbage-collection/media/backgroundserver.png
rename to docs/standard/garbage-collection/media/fundamentals/background-server-garbage-collection.png
diff --git a/docs/standard/garbage-collection/media/backgroundworkstn.png b/docs/standard/garbage-collection/media/fundamentals/background-workstation-garbage-collection.png
similarity index 100%
rename from docs/standard/garbage-collection/media/backgroundworkstn.png
rename to docs/standard/garbage-collection/media/fundamentals/background-workstation-garbage-collection.png
diff --git a/docs/visual-basic/developing-apps/development-with-my/index.md b/docs/visual-basic/developing-apps/development-with-my/index.md
index 26650f18793c8..0da97cb3b1576 100644
--- a/docs/visual-basic/developing-apps/development-with-my/index.md
+++ b/docs/visual-basic/developing-apps/development-with-my/index.md
@@ -17,7 +17,7 @@ Visual Basic provides new features for rapid application development that improv
This table shows the top-level `My` objects and their relationship to each other.
- 
+ 
## In This Section
[Performing Tasks with My.Application, My.Computer, and My.User](../../../visual-basic/developing-apps/development-with-my/performing-tasks-with-my-application-my-computer-and-my-user.md)
diff --git a/docs/visual-basic/developing-apps/development-with-my/media/myobjmodel.gif b/docs/visual-basic/developing-apps/development-with-my/media/index/my-object-model-relationships.gif
similarity index 100%
rename from docs/visual-basic/developing-apps/development-with-my/media/myobjmodel.gif
rename to docs/visual-basic/developing-apps/development-with-my/media/index/my-object-model-relationships.gif
diff --git a/docs/visual-basic/programming-guide/concepts/linq/filtering-data.md b/docs/visual-basic/programming-guide/concepts/linq/filtering-data.md
index d51ff4c6457d6..a7e8b454100ba 100644
--- a/docs/visual-basic/programming-guide/concepts/linq/filtering-data.md
+++ b/docs/visual-basic/programming-guide/concepts/linq/filtering-data.md
@@ -8,7 +8,7 @@ Filtering refers to the operation of restricting the result set to contain only
The following illustration shows the results of filtering a sequence of characters. The predicate for the filtering operation specifies that the character must be 'A'.
- 
+ 
The standard query operator methods that perform selection are listed in the following section.
diff --git a/docs/visual-basic/programming-guide/concepts/linq/media/filtering-data/linq-filter-operation.png b/docs/visual-basic/programming-guide/concepts/linq/media/filtering-data/linq-filter-operation.png
new file mode 100644
index 0000000000000..0e88125a83ba3
Binary files /dev/null and b/docs/visual-basic/programming-guide/concepts/linq/media/filtering-data/linq-filter-operation.png differ
diff --git a/docs/visual-basic/programming-guide/language-features/data-types/generic-types.md b/docs/visual-basic/programming-guide/language-features/data-types/generic-types.md
index e782601b19836..5cc43ad50bbe4 100644
--- a/docs/visual-basic/programming-guide/language-features/data-types/generic-types.md
+++ b/docs/visual-basic/programming-guide/language-features/data-types/generic-types.md
@@ -42,8 +42,7 @@ A *generic type* is a single programming element that adapts to perform the same
An analogy is a screwdriver set with removable heads. You inspect the screw you need to turn and select the correct head for that screw (slotted, crossed, starred). Once you insert the correct head in the screwdriver handle, you perform the exact same function with the screwdriver, namely turning the screw.
- 
-Screwdriver set as a generic tool
+ 
When you define a generic type, you parameterize it with one or more data types. This allows the using code to tailor the data types to its requirements. Your code can declare several different programming elements from the generic element, each one acting on a different set of data types. But the declared elements all perform the identical logic, no matter what data types they are using.
diff --git a/docs/visual-basic/programming-guide/language-features/data-types/media/genericscrewdriver.gif b/docs/visual-basic/programming-guide/language-features/data-types/media/generic-types/generic-screwdriver-set.gif
similarity index 100%
rename from docs/visual-basic/programming-guide/language-features/data-types/media/genericscrewdriver.gif
rename to docs/visual-basic/programming-guide/language-features/data-types/media/generic-types/generic-screwdriver-set.gif