diff --git a/exec.go b/exec.go
index 3866328..2aafef3 100644
--- a/exec.go
+++ b/exec.go
@@ -71,8 +71,8 @@
 	cmdArgs := append([]string{"-s", device}, args...)
 	cmd := sh.Cmd("adb", cmdArgs...)
 
-	cmd.AddStdoutWriter(newPrefixer(device, os.Stdout))
-	cmd.AddStderrWriter(newPrefixer(device, os.Stderr))
+	cmd.AddStdoutWriter(newPrefixer(os.Stdout, device))
+	cmd.AddStderrWriter(newPrefixer(os.Stderr, device))
 	cmd.Run()
 
 	return sh.Err
diff --git a/prefixer.go b/prefixer.go
index a67fdf5..ed2c573 100644
--- a/prefixer.go
+++ b/prefixer.go
@@ -5,65 +5,26 @@
 package main
 
 import (
-	"bytes"
+	"fmt"
 	"io"
-	"os"
+
+	"v.io/x/lib/textutil"
 )
 
 // prefixer is a io.WriteCloser that adds given prefix to each line of the output.
 type prefixer struct {
-	prefix []byte
-	writer io.Writer
-	buffer bytes.Buffer
+	textutil.WriteFlusher
 }
 
 // newPrefixer returns a new prefixer that uses the given prefix.
-func newPrefixer(prefix string, writer io.Writer) *prefixer {
+func newPrefixer(writer io.Writer, prefix string) *prefixer {
 	return &prefixer{
-		prefix: []byte("[" + prefix + "]\t"),
-		writer: writer,
-		buffer: bytes.Buffer{},
+		WriteFlusher: textutil.PrefixLineWriter(writer, fmt.Sprintf("[%v]\t", prefix)),
 	}
 }
 
-func (p *prefixer) Write(b []byte) (int, error) {
-	// write the bytes to the buffer.
-	p.buffer.Write(b)
-
-	// For each line in the unread buffer, add the prefix and write it to the underlying writer.
-	for {
-		idx := bytes.IndexByte(p.buffer.Bytes(), '\n')
-		if idx == -1 {
-			break
-		}
-
-		prefixed := append(p.prefix, p.buffer.Next(idx+1)...)
-		if _, err := p.writer.Write(prefixed); err != nil {
-			return len(b), err
-		}
-	}
-
-	return len(b), nil
-}
-
 // Close flushes the remaining buffer content with prefix, and closes the underlying writer if applicable.
+// This internally calls Flush() on the underlying textutil.WriteFlusher.
 func (p *prefixer) Close() error {
-	// Flush the remaining buffer content if any.
-	// Add the prefix at the beginning, and a newline character at the end.
-	if p.buffer.Len() > 0 {
-		prefixed := append(p.prefix, p.buffer.Bytes()...)
-		prefixed = append(prefixed, '\n')
-		if _, err := p.writer.Write(prefixed); err != nil {
-			return err
-		}
-	}
-
-	// Close the underlying writer unless the writer is stdout or stderr.
-	if p.writer != os.Stdout && p.writer != os.Stderr {
-		if closer, ok := p.writer.(io.Closer); ok {
-			return closer.Close()
-		}
-	}
-
-	return nil
+	return p.WriteFlusher.Flush()
 }
diff --git a/prefixer_test.go b/prefixer_test.go
index 9a78c86..63e1332 100644
--- a/prefixer_test.go
+++ b/prefixer_test.go
@@ -12,7 +12,7 @@
 
 func TestPrefixerSingleDevice(t *testing.T) {
 	buffer := bytes.Buffer{}
-	prefixer := newPrefixer("deviceid01", &buffer)
+	prefixer := newPrefixer(&buffer, "deviceid01")
 
 	fmt.Fprintln(prefixer, "First line.")
 	fmt.Fprintln(prefixer, "Second line.")
@@ -30,8 +30,8 @@
 func TestPrefixerTwoDevices(t *testing.T) {
 	// Two devices case
 	buffer := bytes.Buffer{}
-	prefixer1 := newPrefixer("deviceid01", &buffer)
-	prefixer2 := newPrefixer("deviceid02", &buffer)
+	prefixer1 := newPrefixer(&buffer, "deviceid01")
+	prefixer2 := newPrefixer(&buffer, "deviceid02")
 
 	fmt.Fprintf(prefixer2, "Second")
 	fmt.Fprintln(prefixer1, "First line.")
@@ -55,7 +55,7 @@
 func TestPrefixerLastLine(t *testing.T) {
 	// For the last line, a newline character should be added automatically.
 	buffer := bytes.Buffer{}
-	prefixer := newPrefixer("deviceid01", &buffer)
+	prefixer := newPrefixer(&buffer, "deviceid01")
 
 	fmt.Fprintf(prefixer, "First line.")
 	prefixer.Close()
