work with new os/exec
diff --git a/README.md b/README.md
index f9e5dfa..dc9e7c3 100644
--- a/README.md
+++ b/README.md
@@ -7,37 +7,35 @@
 
 ## Install
 
-    goinstall github.com/kr/pty
+    go get github.com/kr/pty
 
 ## Example
 
-    package main
+```go
+package main
 
-    import (
-        "fmt"
-        "github.com/kr/pty"
-        "io"
-        "os"
-    )
+import (
+	"fmt"
+	"github.com/kr/pty"
+	"io"
+	"os"
+	"os/exec"
+)
 
+func main() {
+	c := exec.Command("grep", "--color=auto", "bar")
+	f, err := pty.Start(c)
+	if err != nil {
+		panic(err)
+	}
 
-    func main() {
-        c, err := pty.Run(
-            "/bin/grep",
-            []string{"grep", "--color=auto", "bar"},
-            nil,
-            "",
-        )
-        if err != nil {
-            panic(err)
-        }
-
-        go func() {
-            fmt.Fprintln(c.Stdin, "foo")
-            fmt.Fprintln(c.Stdin, "bar")
-            fmt.Fprintln(c.Stdin, "baz")
-            c.Stdin.Close()
-        }()
-        io.Copy(os.Stdout, c.Stdout)
-        c.Wait(0)
-    }
+	go func() {
+		fmt.Fprintln(f, "foo")
+		fmt.Fprintln(f, "bar")
+		fmt.Fprintln(f, "baz")
+		f.Close()
+	}()
+	io.Copy(os.Stdout, f)
+	c.Wait()
+}
+```
diff --git a/run.go b/run.go
index 68d1212..f0ee0e1 100644
--- a/run.go
+++ b/run.go
@@ -5,29 +5,22 @@
 	"os/exec"
 )
 
-// Run starts a process with its stdin, stdout, and stderr
-// connected to a pseudo-terminal tty;
-// Stdin and Stdout of the returned exec.Cmd
-// are the corresponding pty (Stderr is always nil).
-// Arguments name, argv, envv, and dir are passed
-// to os.StartProcess unchanged.
-func Run(name string, argv, envv []string, dir string) (c *exec.Cmd, err error) {
-	c = new(exec.Cmd)
-	var fd [3]*os.File
-	var f *os.File
-	f, fd[0], err = Open()
+// Start assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout,
+// and c.Stderr, calls c.Start, and returns the File of the tty's
+// corresponding pty.
+func Start(c *exec.Cmd) (pty *os.File, err error) {
+	pty, tty, err := Open()
 	if err != nil {
 		return nil, err
 	}
-	fd[1] = fd[0]
-	fd[2] = fd[0]
-	c.Stdout = f
-	c.Stdin = f
-	c.Process, err = os.StartProcess(name, argv, &os.ProcAttr{Env: envv, Dir: dir, Files: fd[:]})
-	fd[0].Close()
+	defer tty.Close()
+	c.Stdout = tty
+	c.Stdin = tty
+	c.Stderr = tty
+	err = c.Start()
 	if err != nil {
-		f.Close()
+		pty.Close()
 		return nil, err
 	}
-	return c, nil
+	return pty, err
 }