diff --git a/CppCoreGuidelines.md b/CppCoreGuidelines.md
index 43cd926..a55eb70 100644
--- a/CppCoreGuidelines.md
+++ b/CppCoreGuidelines.md
@@ -19816,9 +19816,9 @@ Most of the concepts below are defined in [the Ranges TS](http://www.open-std.or
* `Relation`
* ...
-### Smart pointer concepts
+### GSL.ptr: Smart pointer concepts
-Described in [Lifetimes paper](https://github.com/isocpp/CppCoreGuidelines/blob/master/docs/Lifetimes%20I%20and%20II%20-%20v0.9.1.pdf).
+See [Lifetimes paper](https://github.com/isocpp/CppCoreGuidelines/blob/master/docs/Lifetimes%20I%20and%20II%20-%20v0.9.1.pdf).
# NL: Naming and layout rules
@@ -20579,7 +20579,7 @@ If the class definition and the constructor body are in separate files, the long
[\[Cline99\]](#Cline99) §22.03-11, [\[Dewhurst03\]](Dewhurst03) §52-53, [\[Koenig97\]](#Koenig97) §4, [\[Lakos96\]](#Lakos96) §10.3.5, [\[Meyers97\]](#Meyers97) §13, [\[Murray93\]](#Murray93) §2.1.3, [\[Sutter00\]](#Sutter00) §47
-### Use of `=`, `{}`, and `()` as initializers
+### Discussion: Use of `=`, `{}`, and `()` as initializers
???
@@ -20906,7 +20906,7 @@ Resource management rule summary:
* [If a class is a resource handle, it needs a constructor, a destructor, and copy and/or move operations](#Cr-handle)
* [If a class is a container, give it an initializer-list constructor](#Cr-list)
-### Provide strong resource safety; that is, never leak anything that you think of as a resource
+### Discussion: Provide strong resource safety; that is, never leak anything that you think of as a resource
##### Reason
@@ -20934,7 +20934,7 @@ This class is a resource handle. It manages the lifetime of the `T`s. To do so,
The basic technique for preventing leaks is to have every resource owned by a resource handle with a suitable destructor. A checker can find "naked `new`s". Given a list of C-style allocation functions (e.g., `fopen()`), a checker can also find uses that are not managed by a resource handle. In general, "naked pointers" can be viewed with suspicion, flagged, and/or analyzed. A complete list of resources cannot be generated without human input (the definition of "a resource" is necessarily too general), but a tool can be "parameterized" with a resource list.
-### Never throw while holding a resource not owned by a handle
+### Discussion: Never throw while holding a resource not owned by a handle
##### Reason
@@ -20979,7 +20979,7 @@ A checker probably must rely on a human-provided list of resources.
For starters, we know about the standard-library containers, `string`, and smart pointers.
The use of `span` and `string_span` should help a lot (they are not resource handles).
-### A "raw" pointer or reference is never a resource handle
+### Discussion: A "raw" pointer or reference is never a resource handle
##### Reason
@@ -20989,7 +20989,7 @@ To be able to distinguish owners from views.
This is independent of how you "spell" pointer: `T*`, `T&`, `Ptr` and `Range` are not owners.
-### Never let a pointer outlive the object it points to
+### Discussion: Never let a pointer outlive the object it points to
##### Reason
@@ -21020,7 +21020,7 @@ The `string`s of `v` are destroyed upon exit from `bad()` and so is `v` itself.
Most compilers already warn about simple cases and has the information to do more. Consider any pointer returned from a function suspect. Use containers, resource handles, and views (e.g., `span` known not to be resource handles) to lower the number of cases to be examined. For starters, consider every class with a destructor as resource handle.
-### Use templates to express containers (and other resource handles)
+### Discussion: Use templates to express containers (and other resource handles)
##### Reason
@@ -21034,7 +21034,7 @@ To provide statically type-safe manipulation of elements.
int sz;
};
-### Return containers by value (relying on move or copy elision for efficiency)
+### Discussion: Return containers by value (relying on move or copy elision for efficiency)
##### Reason
@@ -21057,7 +21057,7 @@ See the Exceptions in [F.20](#Rf-out).
Check for pointers and references returned from functions and see if they are assigned to resource handles (e.g., to a `unique_ptr`).
-### If a class is a resource handle, it needs a constructor, a destructor, and copy and/or move operations
+### Discussion: If a class is a resource handle, it needs a constructor, a destructor, and copy and/or move operations
##### Reason
@@ -21082,7 +21082,7 @@ Now `Named` has a default constructor, a destructor, and efficient copy and move
In general, a tool cannot know if a class is a resource handle. However, if a class has some of [the default operations](#SS-ctor), it should have all, and if a class has a member that is a resource handle, it should be considered as resource handle.
-### If a class is a container, give it an initializer-list constructor
+### Discussion: If a class is a container, give it an initializer-list constructor
##### Reason