diff --git a/content/methods.article b/content/methods.article
index dd81829..bf9339f 100644
--- a/content/methods.article
+++ b/content/methods.article
@@ -91,7 +91,7 @@
 
 method such that `ErrNegativeSqrt(-2).Error()` returns `"cannot`Sqrt`negative`number:`-2"`.
 
-*Note:* a call to `fmt.Print(e)` inside the `Error` method will send the program into an infinite loop. You can avoid this by converting `e` first: `fmt.Print(float64(e))`. Why?
+*Note:* a call to `fmt.Sprint(e)` inside the `Error` method will send the program into an infinite loop. You can avoid this by converting `e` first: `fmt.Sprint(float64(e))`. Why?
 
 Change your `Sqrt` function to return an `ErrNegativeSqrt` value when given a negative number.
 
@@ -184,4 +184,4 @@
 
 You finished this lesson!
 
-You can go back to the list of [[/list][modules]] to find what to learn next, or continue with the [[javascript:click('.next-page')][next lesson]].
\ No newline at end of file
+You can go back to the list of [[/list][modules]] to find what to learn next, or continue with the [[javascript:click('.next-page')][next lesson]].
diff --git a/content/moretypes.article b/content/moretypes.article
index 7d717f5..28e9298 100644
--- a/content/moretypes.article
+++ b/content/moretypes.article
@@ -4,6 +4,31 @@
 The Go Authors
 http://golang.org
 
+* Pointers
+
+Go has pointers.
+A pointer holds the memory address of a variable.
+
+The type `*T` is a pointer to a `T` value. Its zero value is `nil`.
+
+	var p *int
+
+The `&` operator generates a pointer to its operand.
+
+	i := 42
+	p = &i
+
+The `*` operator denotes the pointer's underlying value.
+
+	fmt.Println(*p) // read i through the pointer p
+	*p = 21         // set i through the pointer p
+
+This is known as "dereferencing" or "indirecting".
+
+Unlike C, Go has no pointer arithmetic.
+
+.play prog/tour/pointers.go
+
 * Structs
 
 A `struct` is a collection of fields.
@@ -18,13 +43,13 @@
 
 .play prog/tour/struct-fields.go
 
-* Pointers
+* Pointers to structs
 
-Go has pointers, but no pointer arithmetic.
+Struct fields can be accessed through a struct pointer.
 
-Struct fields can be accessed through a struct pointer. The indirection through the pointer is transparent.
+The indirection through the pointer is transparent.
 
-.play prog/tour/pointers.go
+.play prog/tour/struct-pointers.go
 
 * Struct Literals
 
@@ -32,22 +57,10 @@
 
 You can list just a subset of fields by using the `Name:` syntax. (And the order of named fields is irrelevant.)
 
-The special prefix `&` constructs a pointer to a newly allocated struct.
+The special prefix `&` returns a pointer to the struct value.
 
 .play prog/tour/struct-literals.go
 
-* The new function
-
-The expression `new(T)` allocates a zeroed `T` value and returns a pointer to it.
-
-	var t *T = new(T)
-
-or
-
-	t := new(T)
-
-.play prog/tour/the-new-function.go
-
 * Arrays
 
 The type `[n]T` is an array of `n` values of type `T`.
@@ -135,7 +148,7 @@
 
 Implement `Pic`. It should return a slice of length `dy`, each element of which is a slice of `dx` 8-bit unsigned integers. When you run the program, it will display your picture, interpreting the integers as grayscale (well, bluescale) values.
 
-The choice of image is up to you. Interesting functions include `x^y`, `(x+y)/2`, and `x*y`.
+The choice of image is up to you. Interesting functions include `(x+y)/2`, `x*y`, and `x^y` (to compute the latter function, use [[http://golang.org/pkg/math/#Pow][`math.Pow`]]).
 
 (You need to use a loop to allocate each `[]uint8` inside the `[][]uint8`.)
 
@@ -224,7 +237,7 @@
 
 .image /content/img/newton3.png
 
-Find the cube root of 2, just to make sure the algorithm works. There is a [[http://golang.org/pkg/math/cmplx/#Pow][Pow]] function in the `math/cmplx` package.
+Find the cube root of 8, just to make sure the algorithm works. (There is a [[http://golang.org/pkg/math/cmplx/#Pow][Pow]] function in the `math/cmplx` package to check your results.)
 
 .play prog/tour/advanced-exercise-complex-cube-roots.go
 
@@ -232,4 +245,4 @@
 
 You finished this lesson!
 
-You can go back to the list of [[/list][modules]] to find what to learn next, or continue with the [[javascript:click('.next-page')][next lesson]].
\ No newline at end of file
+You can go back to the list of [[/list][modules]] to find what to learn next, or continue with the [[javascript:click('.next-page')][next lesson]].
diff --git a/content/prog/tour/exercise-errors.go b/content/prog/tour/exercise-errors.go
index b8554e4..22e933b 100644
--- a/content/prog/tour/exercise-errors.go
+++ b/content/prog/tour/exercise-errors.go
@@ -6,7 +6,7 @@
 	"fmt"
 )
 
-func Sqrt(f float64) (float64, error) {
+func Sqrt(x float64) (float64, error) {
 	return 0, nil
 }
 
diff --git a/content/prog/tour/pointers.go b/content/prog/tour/pointers.go
index daf0464..9909b3c 100644
--- a/content/prog/tour/pointers.go
+++ b/content/prog/tour/pointers.go
@@ -4,14 +4,15 @@
 
 import "fmt"
 
-type Vertex struct {
-	X int
-	Y int
-}
-
 func main() {
-	p := Vertex{1, 2}
-	q := &p
-	q.X = 1e9
-	fmt.Println(p)
+	i, j := 42, 2701
+
+	p := &i         // point to i
+	fmt.Println(*p) // read i through the pointer
+	*p = 21         // set i through the pointer
+	fmt.Println(i)  // see the new value of i
+
+	p = &j         // point to j
+	*p = *p / 37   // divide j through the pointer
+	fmt.Println(j) // see the new value of j
 }
diff --git a/content/prog/tour/struct-literals.go b/content/prog/tour/struct-literals.go
index 20d3a90..5a96b2c 100644
--- a/content/prog/tour/struct-literals.go
+++ b/content/prog/tour/struct-literals.go
@@ -9,12 +9,12 @@
 }
 
 var (
-	p = Vertex{1, 2}  // has type Vertex
-	q = &Vertex{1, 2} // has type *Vertex
-	r = Vertex{X: 1}  // Y:0 is implicit
-	s = Vertex{}      // X:0 and Y:0
+	v1 = Vertex{1, 2}  // has type Vertex
+	v2 = Vertex{X: 1}  // Y:0 is implicit
+	v3 = Vertex{}      // X:0 and Y:0
+	p  = &Vertex{1, 2} // has type *Vertex
 )
 
 func main() {
-	fmt.Println(p, q, r, s)
+	fmt.Println(v1, p, v2, v3)
 }
diff --git a/content/prog/tour/the-new-function.go b/content/prog/tour/struct-pointers.go
similarity index 61%
rename from content/prog/tour/the-new-function.go
rename to content/prog/tour/struct-pointers.go
index cc4db9f..901f003 100644
--- a/content/prog/tour/the-new-function.go
+++ b/content/prog/tour/struct-pointers.go
@@ -5,12 +5,13 @@
 import "fmt"
 
 type Vertex struct {
-	X, Y int
+	X int
+	Y int
 }
 
 func main() {
-	v := new(Vertex)
-	fmt.Println(v)
-	v.X, v.Y = 11, 9
+	v := Vertex{1, 2}
+	p := &v
+	p.X = 1e9
 	fmt.Println(v)
 }
