>];
+
+
+ edge[tailclip="false"];
+ table0:pointer2:c -> table4:pointee2;
+ table3:pointer:c -> table4:pointee;
+}
+
diff --git a/src/ch04-02-references-and-borrowing.md b/src/ch04-02-references-and-borrowing.md
index 2861f6e..47ad307 100644
--- a/src/ch04-02-references-and-borrowing.md
+++ b/src/ch04-02-references-and-borrowing.md
@@ -53,7 +53,7 @@ function return value is gone. Next, note that we pass `&s1` into
These `&`s are called *references*, and they allow you to refer to some value
without taking ownership of it. Here’s a diagram:
-DIAGRAM GOES HERE of a &String pointing at a String, with (ptr, len, capacity)
+
Let’s take a closer look at the function call here:
diff --git a/src/ch04-03-slices.md b/src/ch04-03-slices.md
index 40512d6..b1395b1 100644
--- a/src/ch04-03-slices.md
+++ b/src/ch04-03-slices.md
@@ -141,7 +141,7 @@ contains a pointer to the 6th byte of `s` and a length value of 5.
In other words, it looks like this:
-DIAGRAM GOES HERE of s, hello, and world
+
With Rust’s `..` range syntax, if you want to start at the first index (zero),
you can drop the value before the `..`. In other words, these are equal:
diff --git a/src/img/trpl04-05.svg b/src/img/trpl04-05.svg
new file mode 100644
index 0000000..33e5b49
--- /dev/null
+++ b/src/img/trpl04-05.svg
@@ -0,0 +1,82 @@
+
+
+
+
+
diff --git a/src/img/trpl04-06.svg b/src/img/trpl04-06.svg
new file mode 100644
index 0000000..16510b1
--- /dev/null
+++ b/src/img/trpl04-06.svg
@@ -0,0 +1,110 @@
+
+
+
+
+