Remove New, replace with Wrap.
diff --git a/errors.go b/errors.go
index 18a9e68..4d0d8fb 100644
--- a/errors.go
+++ b/errors.go
@@ -1,24 +1,35 @@
 // Package errors implements functions to manipulate errors.
 package errors
 
-import "fmt"
-
-// New returns an error that formats as the given text.
-func New(text string) error {
-	return Errorf(text)
+type e struct {
+	cause   error
+	message string
 }
 
-// Errorf returns a formatted error.
-func Errorf(format string, args ...interface{}) error {
-	return fmt.Errorf(format, args...)
+func (e *e) Error() string {
+	return e.message + ": " + e.cause.Error()
+}
+
+func (e *e) Cause() error {
+	return e.cause
+}
+
+// Wrap returns an error annotating the cause with message.
+// If cause is nil, Wrap returns nil.
+func Wrap(cause error, message string) error {
+	if cause == nil {
+		return nil
+	}
+	return &e{cause: cause, message: message}
 }
 
 // Cause returns the underlying cause of the error, if possible.
 // An error value has a cause if it implements the following
-// method:
+// interface:
 //
-// Cause() error
-//
+//     type Causer interface {
+//            Cause() error
+//     }
 //
 // If the error does not implement Cause, the original error will
 // be returned. If the error is nil, nil will be returned without further
diff --git a/errors_test.go b/errors_test.go
index 7c094c4..6b6321e 100644
--- a/errors_test.go
+++ b/errors_test.go
@@ -1,39 +1,11 @@
 package errors
 
 import (
-	"fmt"
 	"io"
 	"reflect"
 	"testing"
 )
 
-func TestNew(t *testing.T) {
-	got := New("test error")
-	want := fmt.Errorf("test error")
-
-	if !reflect.DeepEqual(got, want) {
-		t.Errorf("New: got %#v, want %#v", got, want)
-	}
-}
-
-func TestNewError(t *testing.T) {
-	tests := []struct {
-		err  string
-		want error
-	}{
-		{"", fmt.Errorf("")},
-		{"foo", fmt.Errorf("foo")},
-		{"foo", New("foo")},
-	}
-
-	for _, tt := range tests {
-		got := New(tt.err)
-		if got.Error() != tt.want.Error() {
-			t.Errorf("New.Error(): got: %q, want %q", got, tt.want)
-		}
-	}
-}
-
 type nilError struct{}
 
 func (nilError) Error() string { return "nil error" }