diff --git a/.travis.yml b/.travis.yml
index 2139b89..26fc3b4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,6 +3,4 @@ sudo: false
 install:
   - go get ./...
 go:
-  - 1.4
-  - 1.5.2
   - tip
diff --git a/debian/changelog b/debian/changelog
index 85f7d1e..8f11205 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+golang-github-gosuri-uitable (0.0.3-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+  * Add missing dependency on golang-github-fatih-color-dev.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Sun, 23 Jun 2019 03:42:24 +0000
+
 golang-github-gosuri-uitable (0.0~git20170830.36ee7e94-2) unstable; urgency=medium
 
   [ Alexandre Viau ]
diff --git a/debian/control b/debian/control
index 4e19292..2cd7d49 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,8 @@ Uploaders: Nobuhiro Iwamatsu <iwamatsu@debian.org>
 Build-Depends: debhelper (>= 9),
                dh-golang,
                golang-any,
-	       golang-github-mattn-go-runewidth-dev
+	       golang-github-mattn-go-runewidth-dev,
+	       golang-github-fatih-color-dev
 Standards-Version: 4.1.0
 Homepage: https://github.com/gosuri/uitable
 Vcs-Git: https://salsa.debian.org/go-team/packages/golang-github-gosuri-uitable.git
diff --git a/example/main.go b/example/main.go
index c59b2e7..ab6b534 100644
--- a/example/main.go
+++ b/example/main.go
@@ -3,6 +3,7 @@ package main
 import (
 	"fmt"
 
+	"github.com/fatih/color"
 	"github.com/gosuri/uitable"
 )
 
@@ -37,4 +38,16 @@ func main() {
 		table.AddRow("") // blank
 	}
 	fmt.Println(table)
+
+	fmt.Print("\n==> Multicolor Support\n")
+	table = uitable.New()
+	table.MaxColWidth = 80
+	table.Wrap = true
+	for _, hacker := range hackers {
+		table.AddRow(color.RedString("Name:"), color.WhiteString(hacker.Name))
+		table.AddRow(color.BlueString("Birthday:"), hacker.Birthday)
+		table.AddRow(color.GreenString("Bio:"), hacker.Bio)
+		table.AddRow("") // blank
+	}
+	fmt.Println(table)
 }
diff --git a/table.go b/table.go
index b792c88..b764e51 100644
--- a/table.go
+++ b/table.go
@@ -6,9 +6,9 @@ import (
 	"strings"
 	"sync"
 
+	"github.com/fatih/color"
 	"github.com/gosuri/uitable/util/strutil"
 	"github.com/gosuri/uitable/util/wordwrap"
-	"github.com/mattn/go-runewidth"
 )
 
 // Separator is the default column seperator
@@ -156,7 +156,7 @@ func (r *Row) String() string {
 		}
 		lines[x] = strutil.Join(line, r.Separator)
 	}
-	return strutil.Join(lines, "\n")
+	return strings.Join(lines, "\n")
 }
 
 // Cell represents a column in a row
@@ -178,7 +178,7 @@ type Cell struct {
 func (c *Cell) LineWidth() uint {
 	width := 0
 	for _, s := range strings.Split(c.String(), "\n") {
-		w := runewidth.StringWidth(s)
+		w := strutil.StringWidth(s)
 		if w > width {
 			width = w
 		}
@@ -191,7 +191,9 @@ func (c *Cell) String() string {
 	if c.Data == nil {
 		return strutil.PadLeft(" ", int(c.Width), ' ')
 	}
-	s := fmt.Sprintf("%v", c.Data)
+	col := color.New(color.FgBlack)
+	col.DisableColor()
+	s := fmt.Sprintf("%v", col.Sprint(c.Data))
 	if c.Width > 0 {
 		if c.Wrap && uint(len(s)) > c.Width {
 			return wordwrap.WrapString(s, c.Width)
diff --git a/util/strutil/strutil.go b/util/strutil/strutil.go
index cb35bce..31b425c 100644
--- a/util/strutil/strutil.go
+++ b/util/strutil/strutil.go
@@ -3,12 +3,18 @@ package strutil
 
 import (
 	"bytes"
+	"regexp"
+
 	"github.com/mattn/go-runewidth"
 )
 
+const ansi = "[\u001B\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[a-zA-Z\\d]*)*)?\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))"
+
+var re = regexp.MustCompile(ansi)
+
 // PadRight returns a new string of a specified length in which the end of the current string is padded with spaces or with a specified Unicode character.
 func PadRight(str string, length int, pad byte) string {
-	slen := runewidth.StringWidth(str)
+	slen := StringWidth(str)
 	if slen >= length {
 		return str
 	}
@@ -21,7 +27,7 @@ func PadRight(str string, length int, pad byte) string {
 
 // PadLeft returns a new string of a specified length in which the beginning of the current string is padded with spaces or with a specified Unicode character.
 func PadLeft(str string, length int, pad byte) string {
-	slen := runewidth.StringWidth(str)
+	slen := StringWidth(str)
 	if slen >= length {
 		return str
 	}
@@ -36,7 +42,7 @@ func PadLeft(str string, length int, pad byte) string {
 // Resize resizes the string with the given length. It ellipses with '...' when the string's length exceeds
 // the desired length or pads spaces to the right of the string when length is smaller than desired
 func Resize(s string, length uint, rightAlign bool) string {
-	slen := runewidth.StringWidth(s)
+	slen := StringWidth(s)
 	n := int(length)
 	if slen == n {
 		return s
@@ -53,7 +59,7 @@ func Resize(s string, length uint, rightAlign bool) string {
 		w := 0
 		for _, r := range rs {
 			buf.WriteRune(r)
-			rw := runewidth.RuneWidth(r)
+			rw := RuneWidth(r)
 			if w+rw >= n-3 {
 				break
 			}
@@ -74,3 +80,18 @@ func Join(list []string, delim string) string {
 	buf.WriteString(list[len(list)-1])
 	return buf.String()
 }
+
+// Strip strips the string of all colors
+func Strip(s string) string {
+	return re.ReplaceAllString(s, "")
+}
+
+// StringWidth returns the actual width of the string without colors
+func StringWidth(s string) int {
+	return runewidth.StringWidth(Strip(s))
+}
+
+// RuneWidth returns the actual width of the rune
+func RuneWidth(s rune) int {
+	return runewidth.RuneWidth(s)
+}
diff --git a/util/wordwrap/wordwrap.go b/util/wordwrap/wordwrap.go
index e64dbc8..b2c63b8 100644
--- a/util/wordwrap/wordwrap.go
+++ b/util/wordwrap/wordwrap.go
@@ -3,8 +3,9 @@ package wordwrap
 
 import (
 	"bytes"
-	"github.com/mattn/go-runewidth"
 	"unicode"
+
+	"github.com/gosuri/uitable/util/strutil"
 )
 
 // WrapString wraps the given string within lim width in characters.
@@ -30,7 +31,7 @@ func WrapString(s string, lim uint) string {
 				} else {
 					current += uint(spaceWidth)
 					spaceBuf.WriteTo(buf)
-					spaceWidth += runewidth.StringWidth(buf.String())
+					spaceWidth += strutil.StringWidth(buf.String())
 				}
 				spaceBuf.Reset()
 				spaceWidth = 0
@@ -57,10 +58,10 @@ func WrapString(s string, lim uint) string {
 			}
 
 			spaceBuf.WriteRune(char)
-			spaceWidth += runewidth.RuneWidth(char)
+			spaceWidth += strutil.RuneWidth(char)
 		} else {
 			wordBuf.WriteRune(char)
-			wordWidth += runewidth.RuneWidth(char)
+			wordWidth += strutil.RuneWidth(char)
 
 			if current+uint(spaceWidth+wordWidth) > lim && uint(wordWidth) < lim {
 				buf.WriteRune('\n')