diff --git a/tutorial/mapping-internals.fig b/tutorial/mapping-internals.fig
new file mode 100644
index 0000000000000000000000000000000000000000..c0ea0961742f0707673871e6748dad8e1202fc69
--- /dev/null
+++ b/tutorial/mapping-internals.fig
@@ -0,0 +1,123 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 3750 3900 6300 4950
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 4500 3900 5400 3900 5400 4950 4500 4950 4500 3900
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 3750 3900 6300 3900 6300 4950 3750 4950 3750 3900
+4 0 0 100 0 0 12 0.0000 4 105 450 4650 4125 struct\001
+4 0 0 100 0 0 12 0.0000 4 135 495 4650 4350 svalue\001
+4 0 0 100 0 0 12 0.0000 4 180 315 4650 4800 Key\001
+4 0 0 100 0 0 12 0.0000 4 105 450 5475 4125 struct\001
+4 0 0 100 0 0 12 0.0000 4 135 495 5475 4350 svalue\001
+4 0 0 100 0 0 12 0.0000 4 135 450 5475 4800 Value\001
+4 0 0 100 0 0 12 0.0000 4 135 375 3900 4125 Next\001
+-6
+6 3750 4950 6300 6000
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 4500 4950 5400 4950 5400 6000 4500 6000 4500 4950
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 3750 4950 6300 4950 6300 6000 3750 6000 3750 4950
+4 0 0 100 0 0 12 0.0000 4 105 450 4650 5175 struct\001
+4 0 0 100 0 0 12 0.0000 4 135 495 4650 5400 svalue\001
+4 0 0 100 0 0 12 0.0000 4 180 315 4650 5850 Key\001
+4 0 0 100 0 0 12 0.0000 4 105 450 5475 5175 struct\001
+4 0 0 100 0 0 12 0.0000 4 135 495 5475 5400 svalue\001
+4 0 0 100 0 0 12 0.0000 4 135 450 5475 5850 Value\001
+4 0 0 100 0 0 12 0.0000 4 135 375 3900 5175 Next\001
+-6
+6 3750 6000 6300 7050
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 4500 6000 5400 6000 5400 7050 4500 7050 4500 6000
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 3750 6000 6300 6000 6300 7050 3750 7050 3750 6000
+4 0 0 100 0 0 12 0.0000 4 105 450 4650 6225 struct\001
+4 0 0 100 0 0 12 0.0000 4 135 495 4650 6450 svalue\001
+4 0 0 100 0 0 12 0.0000 4 180 315 4650 6900 Key\001
+4 0 0 100 0 0 12 0.0000 4 105 450 5475 6225 struct\001
+4 0 0 100 0 0 12 0.0000 4 135 495 5475 6450 svalue\001
+4 0 0 100 0 0 12 0.0000 4 135 450 5475 6900 Value\001
+4 0 0 100 0 0 12 0.0000 4 135 375 3900 6225 Next\001
+-6
+6 3750 7050 6300 8100
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 4500 7050 5400 7050 5400 8100 4500 8100 4500 7050
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 3750 7050 6300 7050 6300 8100 3750 8100 3750 7050
+4 0 0 100 0 0 12 0.0000 4 105 450 4650 7275 struct\001
+4 0 0 100 0 0 12 0.0000 4 135 495 4650 7500 svalue\001
+4 0 0 100 0 0 12 0.0000 4 180 315 4650 7950 Key\001
+4 0 0 100 0 0 12 0.0000 4 105 450 5475 7275 struct\001
+4 0 0 100 0 0 12 0.0000 4 135 495 5475 7500 svalue\001
+4 0 0 100 0 0 12 0.0000 4 135 450 5475 7950 Value\001
+4 0 0 100 0 0 12 0.0000 4 135 375 3900 7275 Next\001
+-6
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 450 600 2700 600 2700 4050 450 4050 450 600
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 3450 3450 6750 3450
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 3450 600 6750 600 6750 9150 3450 9150 3450 600
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 6
+	 3600 8550 4200 8250 4575 8775 5625 8325 6000 8775 6525 8250
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 3750 8100 3750 8475
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 4500 8100 4500 8700
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 5400 8100 5400 8400
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 6300 8100 6300 8475
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 3750 1050 6300 1050 6300 1650 3750 1650 3750 1050
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 3750 1650 6300 1650 6300 2250 3750 2250 3750 1650
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 3750 2250 6300 2250 6300 2850 3750 2850 3750 2250
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 6
+	 3525 3000 4200 3225 4800 3000 5625 3225 6000 3000 6600 3150
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 3750 2850 3750 3075
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 6300 2850 6300 3075
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 600 1425 2550 1425 2550 2025 600 2025 600 1425
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+	 600 2400 2550 2400 2550 3000 600 3000 600 2400
+3 2 0 1 0 7 100 0 -1 0.000 0 1 0 4
+	1 1 1.00 60.00 120.00
+	 2100 1800 2850 1650 3150 1050 3750 1050
+	 0.000 -1.000 -1.000 0.000
+3 2 0 1 0 7 100 0 -1 0.000 0 1 0 4
+	1 1 1.00 60.00 120.00
+	 2025 2850 3000 3000 3000 4875 3750 5250
+	 0.000 -1.000 -1.000 0.000
+3 2 0 1 0 7 100 0 -1 0.000 0 1 0 4
+	1 1 1.00 60.00 120.00
+	 6000 1350 7050 1800 7050 3900 6300 4350
+	 0.000 -1.000 -1.000 0.000
+3 2 0 1 0 7 100 0 -1 0.000 0 1 0 4
+	1 1 1.00 60.00 120.00
+	 6000 1950 7350 3900 7350 6750 6300 7275
+	 0.000 -1.000 -1.000 0.000
+3 2 0 1 0 7 100 0 -1 0.000 0 1 0 4
+	1 1 1.00 60.00 120.00
+	 4050 5550 3150 5925 3150 7950 3750 8400
+	 0.000 -1.000 -1.000 0.000
+3 2 0 1 0 7 100 0 -1 0.000 0 1 0 4
+	1 1 1.00 60.00 120.00
+	 4125 4425 2625 4875 2625 6000 3750 6450
+	 0.000 -1.000 -1.000 0.000
+4 0 0 100 0 0 12 0.0000 4 180 1125 600 900 struct mapping\001
+4 0 0 100 0 0 12 0.0000 4 180 2130 3525 450 Reallocatable memory block\001
+4 0 0 100 0 0 12 0.0000 4 135 825 3600 825 Hash table\001
+4 0 0 100 0 0 12 0.0000 4 180 1245 3600 3675 Key-value pairs\001
+4 0 0 100 0 0 12 0.0000 4 180 1680 675 1650 struct keypair **hash;\001
+4 0 0 100 0 0 12 0.0000 4 180 1815 675 2625 struct keypair *free_list\001