diff --git a/adaptor_go1_12.go b/adaptor.go
similarity index 99%
rename from adaptor_go1_12.go
rename to adaptor.go
index 6b9f2f0..4317f24 100644
--- a/adaptor_go1_12.go
+++ b/adaptor.go
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !go1.13
-
 package xerrors
 
 import (
diff --git a/adaptor_go1_13.go b/adaptor_go1_13.go
deleted file mode 100644
index 57f519d..0000000
--- a/adaptor_go1_13.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.13
-
-package xerrors
-
-import (
-	"errors"
-	"fmt"
-	"strconv"
-)
-
-// A Frame contains part of a call stack.
-type Frame = errors.Frame
-
-// Caller returns a Frame that describes a frame on the caller's stack.
-// The argument skip is the number of frames to skip over.
-// Caller(0) returns the frame for the caller of Caller.
-var Caller func(skip int) Frame = errors.Caller
-
-// FormatError calls the FormatError method of f with an errors.Printer
-// configured according to s and verb, and writes the result to s.
-func FormatError(f Formatter, s fmt.State, verb rune) {
-	// Assuming this function is only called from the Format method, and given
-	// that FormatError takes precedence over Format, it cannot be called from
-	// any package that supports errors.Formatter. It is therefore safe to
-	// disregard that State may be a specific printer implementation and use one
-	// of our choice instead.
-
-	width, okW := s.Width()
-	prec, okP := s.Precision()
-
-	// Construct format string from State s.
-	format := []byte{'%'}
-	if s.Flag('-') {
-		format = append(format, '-')
-	}
-	if s.Flag('+') {
-		format = append(format, '+')
-	}
-	if s.Flag(' ') {
-		format = append(format, ' ')
-	}
-	if okW {
-		format = strconv.AppendInt(format, int64(width), 10)
-	}
-	if okP {
-		format = append(format, '.')
-		format = strconv.AppendInt(format, int64(prec), 10)
-	}
-	format = append(format, string(verb)...)
-	fmt.Fprintf(s, string(format), f)
-}
diff --git a/fmt_test.go b/fmt_test.go
index 5933f18..6744b8a 100644
--- a/fmt_test.go
+++ b/fmt_test.go
@@ -7,6 +7,7 @@
 import (
 	"fmt"
 	"io"
+	"os"
 	"path"
 	"reflect"
 	"regexp"
@@ -90,7 +91,7 @@
 		nonascii = &wrapped{"café", nil}
 		newline  = &wrapped{"msg with\nnewline",
 			&wrapped{"and another\none", nil}}
-		fallback  = &wrapped{"fallback", xerrors.New("file does not exist")}
+		fallback  = &wrapped{"fallback", os.ErrNotExist}
 		oldAndNew = &wrapped{"new style", formatError("old style")}
 		framed    = &withFrameAndMore{
 			frame: xerrors.Caller(0),
@@ -105,13 +106,6 @@
 		want   string
 		regexp bool
 	}{{
-		err: xerrors.New("foo"),
-		fmt: "%+v",
-		want: "foo:" +
-			"\n    golang.org/x/xerrors_test.TestErrorFormatter" +
-			"\n        .+/golang.org/x/xerrors/fmt_test.go:1\\d\\d",
-		regexp: true,
-	}, {
 		err:  simple,
 		fmt:  "%s",
 		want: "simple",
@@ -162,7 +156,7 @@
 		fmt: "%+v",
 		want: "something:" +
 			"\n    golang.org/x/xerrors_test.TestErrorFormatter" +
-			"\n        .+/fmt_test.go:9\\d" +
+			"\n        .+/fmt_test.go:97" +
 			"\n    something more",
 		regexp: true,
 	}, {
@@ -179,10 +173,7 @@
 		// Note: no colon after the last error, as there are no details.
 		want: "fallback:" +
 			"\n    somefile.go:123" +
-			"\n  - file does not exist:" +
-			"\n    golang.org/x/xerrors_test.TestErrorFormatter" +
-			"\n        .+/golang.org/x/xerrors/fmt_test.go:9\\d",
-		regexp: true,
+			"\n  - file does not exist",
 	}, {
 		err:  opaque,
 		fmt:  "%s",
@@ -290,12 +281,12 @@
 		err:  simple,
 		fmt:  "%T",
 		want: "*xerrors_test.wrapped",
-		// }, {
-		// 	// The behavior for this case is different between go1.12 and go1.13.
-		// 	err:  simple,
-		// 	fmt:  "%🤪",
-		// 	want: "%!🤪(*xerrors_test.wrapped=&{simple <nil>})", // go1.12
-		// 	want: "&{%!🤪(string=simple) <nil>}",                // go1.13
+	}, {
+		err:  simple,
+		fmt:  "%🤪",
+		want: "%!🤪(*xerrors_test.wrapped)",
+		// For 1.13:
+		//  want: "%!🤪(*xerrors_test.wrapped=&{simple <nil>})",
 	}, {
 		err:  formatError("use fmt.Formatter"),
 		fmt:  "%#v",
diff --git a/format_go1_12.go b/format.go
similarity index 97%
rename from format_go1_12.go
rename to format.go
index ba856fe..1bc9c26 100644
--- a/format_go1_12.go
+++ b/format.go
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !go1.13
-
 package xerrors
 
 // A Formatter formats error messages.
diff --git a/format_go1_13.go b/format_go1_13.go
deleted file mode 100644
index 95c6596..0000000
--- a/format_go1_13.go
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.13
-
-package xerrors
-
-import "errors"
-
-// A Formatter formats error messages.
-type Formatter = errors.Formatter
-
-// A Printer formats error messages.
-//
-// The most common implementation of Printer is the one provided by package fmt
-// during Printf (as of Go 1.13). Localization packages such as golang.org/x/text/message
-// typically provide their own implementations.
-type Printer = errors.Printer
diff --git a/frame_go1_12.go b/frame.go
similarity index 98%
rename from frame_go1_12.go
rename to frame.go
index 6740f7f..0de628e 100644
--- a/frame_go1_12.go
+++ b/frame.go
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !go1.13
-
 package xerrors
 
 import (
