diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,10 @@
 The format is based on [Keep a Changelog](http://keepachangelog.com/)
 and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/).
 
+## [0.1.0.2] - 2020-12-26
+### Changed
+- Fix bug in `italic`
+
 ## [0.1.0.1] - 2020-06-14
 
 ### Changed
diff --git a/Data/Text/ANSI.hs b/Data/Text/ANSI.hs
--- a/Data/Text/ANSI.hs
+++ b/Data/Text/ANSI.hs
@@ -5,66 +5,67 @@
   ( -- $intro
 
     -- * Foreground color
-    black
-  , red
-  , green
-  , yellow
-  , blue
-  , magenta
-  , cyan
-  , white
-  , brightBlack
-  , brightRed
-  , brightGreen
-  , brightYellow
-  , brightBlue
-  , brightMagenta
-  , brightCyan
-  , brightWhite
-  , rgb
+    black,
+    red,
+    green,
+    yellow,
+    blue,
+    magenta,
+    cyan,
+    white,
+    brightBlack,
+    brightRed,
+    brightGreen,
+    brightYellow,
+    brightBlue,
+    brightMagenta,
+    brightCyan,
+    brightWhite,
+    rgb,
 
     -- * Background color
-  , blackBg
-  , redBg
-  , greenBg
-  , yellowBg
-  , blueBg
-  , magentaBg
-  , cyanBg
-  , whiteBg
-  , brightBlackBg
-  , brightRedBg
-  , brightGreenBg
-  , brightYellowBg
-  , brightBlueBg
-  , brightMagentaBg
-  , brightCyanBg
-  , brightWhiteBg
-  , rgbBg
+    blackBg,
+    redBg,
+    greenBg,
+    yellowBg,
+    blueBg,
+    magentaBg,
+    cyanBg,
+    whiteBg,
+    brightBlackBg,
+    brightRedBg,
+    brightGreenBg,
+    brightYellowBg,
+    brightBlueBg,
+    brightMagentaBg,
+    brightCyanBg,
+    brightWhiteBg,
+    rgbBg,
 
     -- * Style
-  , bold
-  , faint
-  , italic
-  , underline
-  , doubleUnderline
-  , strikethrough
-  , frame
-  , encircle
-  , overline
-  ) where
+    bold,
+    faint,
+    italic,
+    underline,
+    doubleUnderline,
+    strikethrough,
+    frame,
+    encircle,
+    overline,
+  )
+where
 
 #if !MIN_VERSION_base(4,13,0)
 import Data.Semigroup ((<>))
 #endif
 import Data.Text
-import Data.Text.Lazy.Builder (Builder)
-import Data.Word (Word8)
-import Foreign.C (CInt(CInt))
-import System.IO.Unsafe (unsafePerformIO)
 import qualified Data.Text.Lazy as Text.Lazy
+import Data.Text.Lazy.Builder (Builder)
 import qualified Data.Text.Lazy.Builder as Builder
 import qualified Data.Text.Lazy.Builder.Int as Builder
+import Data.Word (Word8)
+import Foreign.C (CInt (CInt))
+import System.IO.Unsafe (unsafePerformIO)
 
 -- $intro
 --
@@ -79,201 +80,306 @@
 -- Also features terminal detection, so redirecting styled output to a file will
 -- automatically strip the ANSI escape sequences.
 
-{-# INLINABLE black           #-}
-{-# INLINABLE red             #-}
-{-# INLINABLE green           #-}
-{-# INLINABLE yellow          #-}
-{-# INLINABLE blue            #-}
-{-# INLINABLE magenta         #-}
-{-# INLINABLE cyan            #-}
-{-# INLINABLE white           #-}
-{-# INLINABLE brightBlack     #-}
-{-# INLINABLE brightRed       #-}
-{-# INLINABLE brightGreen     #-}
-{-# INLINABLE brightYellow    #-}
-{-# INLINABLE brightBlue      #-}
-{-# INLINABLE brightMagenta   #-}
-{-# INLINABLE brightCyan      #-}
-{-# INLINABLE brightWhite     #-}
-{-# INLINABLE blackBg         #-}
-{-# INLINABLE redBg           #-}
-{-# INLINABLE greenBg         #-}
-{-# INLINABLE yellowBg        #-}
-{-# INLINABLE blueBg          #-}
-{-# INLINABLE magentaBg       #-}
-{-# INLINABLE cyanBg          #-}
-{-# INLINABLE whiteBg         #-}
-{-# INLINABLE brightBlackBg   #-}
-{-# INLINABLE brightRedBg     #-}
-{-# INLINABLE brightGreenBg   #-}
-{-# INLINABLE brightYellowBg  #-}
-{-# INLINABLE brightBlueBg    #-}
-{-# INLINABLE brightMagentaBg #-}
-{-# INLINABLE brightCyanBg    #-}
-{-# INLINABLE brightWhiteBg   #-}
-
-black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed,
-  brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan,
-  brightWhite, blackBg, redBg, greenBg,
-  yellowBg, blueBg, magentaBg, cyanBg,
-  whiteBg, brightBlackBg, brightRedBg,
-  brightGreenBg, brightYellowBg, brightBlueBg,
-  brightMagentaBg, brightCyanBg,
-  brightWhiteBg :: Text -> Text
-
 -- | Black foreground.
-black           = surround "30"  "39"
+black :: Text -> Text
+black =
+  foreground "30"
+{-# INLINEABLE black #-}
+
 -- | Red foreground.
-red             = surround "31"  "39"
+red :: Text -> Text
+red =
+  foreground "31"
+{-# INLINEABLE red #-}
+
 -- | Green foreground.
-green           = surround "32"  "39"
+green :: Text -> Text
+green =
+  foreground "32"
+{-# INLINEABLE green #-}
+
 -- | Yellow foreground.
-yellow          = surround "33"  "39"
+yellow :: Text -> Text
+yellow =
+  foreground "33"
+{-# INLINEABLE yellow #-}
+
 -- | Blue foreground.
-blue            = surround "34"  "39"
+blue :: Text -> Text
+blue =
+  foreground "34"
+{-# INLINEABLE blue #-}
+
 -- | Magenta foreground.
-magenta         = surround "35"  "39"
+magenta :: Text -> Text
+magenta =
+  foreground "35"
+{-# INLINEABLE magenta #-}
+
 -- | Cyan foreground.
-cyan            = surround "36"  "39"
+cyan :: Text -> Text
+cyan =
+  foreground "36"
+{-# INLINEABLE cyan #-}
+
 -- | White foreground.
-white           = surround "37"  "39"
+white :: Text -> Text
+white =
+  foreground "37"
+{-# INLINEABLE white #-}
+
 -- | Bright black foreground.
-brightBlack     = surround "90"  "39"
+brightBlack :: Text -> Text
+brightBlack =
+  foreground "90"
+{-# INLINEABLE brightBlack #-}
+
 -- | Bright red foreground.
-brightRed       = surround "91"  "39"
+brightRed :: Text -> Text
+brightRed =
+  foreground "91"
+{-# INLINEABLE brightRed #-}
+
 -- | Bright green foreground.
-brightGreen     = surround "92"  "39"
+brightGreen :: Text -> Text
+brightGreen =
+  foreground "92"
+{-# INLINEABLE brightGreen #-}
+
 -- | Bright yellow foreground.
-brightYellow    = surround "93"  "39"
+brightYellow :: Text -> Text
+brightYellow =
+  foreground "93"
+{-# INLINEABLE brightYellow #-}
+
 -- | Bright blue foreground.
-brightBlue      = surround "94"  "39"
+brightBlue :: Text -> Text
+brightBlue =
+  foreground "94"
+{-# INLINEABLE brightBlue #-}
+
 -- | Bright magenta foreground.
-brightMagenta   = surround "95"  "39"
+brightMagenta :: Text -> Text
+brightMagenta =
+  foreground "95"
+{-# INLINEABLE brightMagenta #-}
+
 -- | Bright cyan foreground.
-brightCyan      = surround "96"  "39"
+brightCyan :: Text -> Text
+brightCyan =
+  foreground "96"
+{-# INLINEABLE brightCyan #-}
+
 -- | Bright white foreground.
-brightWhite     = surround "97"  "39"
+brightWhite :: Text -> Text
+brightWhite =
+  foreground "97"
+{-# INLINEABLE brightWhite #-}
+
+-- | RGB foreground.
+rgb :: Word8 -> Word8 -> Word8 -> Text -> Text
+rgb r g b =
+  foreground ("38;2;" <> Builder.decimal r <> semi <> Builder.decimal g <> semi <> Builder.decimal b)
+{-# INLINEABLE rgb #-}
+
+foreground :: Builder -> Text -> Text
+foreground s =
+  surround s "39"
+{-# INLINE foreground #-}
+
 -- | Black background.
-blackBg         = surround "40"  "49"
+blackBg :: Text -> Text
+blackBg =
+  background "40"
+{-# INLINEABLE blackBg #-}
+
 -- | Red background.
-redBg           = surround "41"  "49"
+redBg :: Text -> Text
+redBg =
+  background "41"
+{-# INLINEABLE redBg #-}
+
 -- | Green background.
-greenBg         = surround "42"  "49"
+greenBg :: Text -> Text
+greenBg =
+  background "42"
+{-# INLINEABLE greenBg #-}
+
 -- | Yellow background.
-yellowBg        = surround "43"  "49"
+yellowBg :: Text -> Text
+yellowBg =
+  background "43"
+{-# INLINEABLE yellowBg #-}
+
 -- | Blue background.
-blueBg          = surround "44"  "49"
+blueBg :: Text -> Text
+blueBg =
+  background "44"
+{-# INLINEABLE blueBg #-}
+
 -- | Magenta background.
-magentaBg       = surround "45"  "49"
+magentaBg :: Text -> Text
+magentaBg =
+  background "45"
+{-# INLINEABLE magentaBg #-}
+
 -- | Cyan background.
-cyanBg          = surround "46"  "49"
+cyanBg :: Text -> Text
+cyanBg =
+  background "46"
+{-# INLINEABLE cyanBg #-}
+
 -- | White background.
-whiteBg         = surround "47"  "49"
+whiteBg :: Text -> Text
+whiteBg =
+  background "47"
+{-# INLINEABLE whiteBg #-}
+
 -- | Bright black background.
-brightBlackBg   = surround "100" "49"
+brightBlackBg :: Text -> Text
+brightBlackBg =
+  background "100"
+{-# INLINEABLE brightBlackBg #-}
+
 -- | Bright red background.
-brightRedBg     = surround "101" "49"
+brightRedBg :: Text -> Text
+brightRedBg =
+  background "101"
+{-# INLINEABLE brightRedBg #-}
+
 -- | Bright green background.
-brightGreenBg   = surround "102" "49"
+brightGreenBg :: Text -> Text
+brightGreenBg =
+  background "102"
+{-# INLINEABLE brightGreenBg #-}
+
 -- | Bright yellow background.
-brightYellowBg  = surround "103" "49"
+brightYellowBg :: Text -> Text
+brightYellowBg =
+  background "103"
+{-# INLINEABLE brightYellowBg #-}
+
 -- | Bright blue background.
-brightBlueBg    = surround "104" "49"
+brightBlueBg :: Text -> Text
+brightBlueBg =
+  background "104"
+{-# INLINEABLE brightBlueBg #-}
+
 -- | Bright magenta background.
-brightMagentaBg = surround "105" "49"
+brightMagentaBg :: Text -> Text
+brightMagentaBg =
+  background "105"
+{-# INLINEABLE brightMagentaBg #-}
+
 -- | Bright cyan background.
-brightCyanBg    = surround "106" "49"
+brightCyanBg :: Text -> Text
+brightCyanBg =
+  background "106"
+{-# INLINEABLE brightCyanBg #-}
+
 -- | Bright white background.
-brightWhiteBg   = surround "107" "49"
+brightWhiteBg :: Text -> Text
+brightWhiteBg =
+  background "107"
+{-# INLINEABLE brightWhiteBg #-}
 
--- | RGB foreground.
-{-# INLINABLE rgb #-}
-rgb :: Word8 -> Word8 -> Word8 -> Text -> Text
-rgb r g b =
-  surround
-    ("38;2;" <>
-     Builder.decimal r <>
-     semi <>
-     Builder.decimal g <>
-     semi <>
-     Builder.decimal b)
-    "39"
+background :: Builder -> Text -> Text
+background s =
+  surround s "49"
+{-# INLINE background #-}
 
 -- | RGB background.
-{-# INLINABLE rgbBg #-}
 rgbBg :: Word8 -> Word8 -> Word8 -> Text -> Text
 rgbBg r g b =
-  surround
-    ("48;2;" <>
-     Builder.decimal r <>
-     semi <>
-     Builder.decimal g <>
-     semi <>
-     Builder.decimal b)
-    "49"
-
-{-# INLINABLE bold            #-}
-{-# INLINABLE faint           #-}
-{-# INLINABLE italic          #-}
-{-# INLINABLE underline       #-}
-{-# INLINABLE doubleUnderline #-}
-{-# INLINABLE strikethrough   #-}
-{-# INLINABLE frame           #-}
-{-# INLINABLE encircle        #-}
-{-# INLINABLE overline        #-}
-
-bold, faint, italic, underline, doubleUnderline, strikethrough, frame,
-  encircle, overline :: Text -> Text
+  background ("48;2;" <> Builder.decimal r <> semi <> Builder.decimal g <> semi <> Builder.decimal b)
+{-# INLINEABLE rgbBg #-}
 
 -- | __Bold__ style (high intensity).
-bold            = surround "1"  "22"
+bold :: Text -> Text
+bold =
+  surround "1" "22"
+{-# INLINEABLE bold #-}
+
 -- | Faint style (low intensity).
-faint           = surround "2"  "22"
+faint :: Text -> Text
+faint =
+  surround "2" "22"
+{-# INLINEABLE faint #-}
+
 -- | /Italic/ style.
-italic          = surround "3"  "32"
+italic :: Text -> Text
+italic =
+  surround "3" "23"
+{-# INLINEABLE italic #-}
+
 -- | U̲n̲d̲e̲r̲l̲i̲n̲e̲ style.
-underline       = surround "4"  "24"
+underline :: Text -> Text
+underline =
+  surround "4" "24"
+{-# INLINEABLE underline #-}
+
 -- | D̳o̳u̳b̳l̳e̳ ̳u̳n̳d̳e̳r̳l̳i̳n̳e̳ style.
-doubleUnderline = surround "21" "24"
+doubleUnderline :: Text -> Text
+doubleUnderline =
+  surround "21" "24"
+{-# INLINEABLE doubleUnderline #-}
+
 -- | S̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶ style.
-strikethrough   = surround "9"  "29"
+strikethrough :: Text -> Text
+strikethrough =
+  surround "9" "29"
+{-# INLINEABLE strikethrough #-}
+
 -- | Frame style.
-frame           = surround "51" "54"
--- | Encircle style.
-encircle        = surround "52" "54"
--- | O̅v̅e̅r̅l̅i̅n̅e̅ style.
-overline        = surround "53" "55"
+frame :: Text -> Text
+frame =
+  surround "51" "54"
+{-# INLINEABLE frame #-}
 
+-- | Encircle style.
+encircle :: Text -> Text
+encircle =
+  surround "52" "54"
+{-# INLINEABLE encircle #-}
 
+-- | O̅v̅e̅r̅l̅i̅n̅e̅ style.
+overline :: Text -> Text
+overline =
+  surround "53" "55"
+{-# INLINEABLE overline #-}
 
 --------------------------------------------------------------------------------
 
--- Don't inline before phase 1
-{-# NOINLINE [1] surround #-}
 surround :: Builder -> Builder -> Text -> Text
 surround open close text
   | isatty = Text.Lazy.toStrict (Builder.toLazyText (esc <> open <> m <> Builder.fromText text <> esc <> close <> m))
   | otherwise = text
+-- Don't inline before phase 1
+{-# NOINLINE [1] surround #-}
 
 esc :: Builder
-esc = "\ESC["
+esc =
+  "\ESC["
 
-m, semi :: Builder
-m    = Builder.singleton 'm'
-semi = Builder.singleton ';'
+m :: Builder
+m =
+  Builder.singleton 'm'
 
-{-# NOINLINE isatty #-}
+semi :: Builder
+semi =
+  Builder.singleton ';'
+
 isatty :: Bool
 isatty =
   unsafePerformIO (c_isatty 1) == 1
+{-# NOINLINE isatty #-}
 
 foreign import ccall unsafe "isatty"
   c_isatty :: CInt -> IO CInt
 
 -- Collapse surround/surround to a single surround before phase 1
 {-# RULES
-  "surround/surround" [~1]
-  forall a b c d s.
+"surround/surround" [~1] forall a b c d s.
   surround a b (surround c d s) =
-  surround (a <> semi <> c) (b <> semi <> d) s
-#-}
+    surround (a <> semi <> c) (b <> semi <> d) s
+  #-}
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,2 +1,5 @@
 [![GitHub CI](https://github.com/mitchellwrosen/text-ansi/workflows/CI/badge.svg)](https://github.com/mitchellwrosen/text-ansi/actions)
 [![Hackage](https://img.shields.io/hackage/v/text-ansi.svg)](https://hackage.haskell.org/package/text-ansi)
+[![Stackage LTS](https://stackage.org/package/text-ansi/badge/lts)](https://www.stackage.org/lts/package/text-ansi)
+[![Stackage Nightly](https://stackage.org/package/text-ansi/badge/nightly)](https://www.stackage.org/nightly/package/text-ansi)
+[![Dependencies](https://img.shields.io/hackage-deps/v/text-ansi)](https://packdeps.haskellers.com/reverse/text-ansi)
diff --git a/cabal.project b/cabal.project
--- a/cabal.project
+++ b/cabal.project
@@ -1,5 +1,1 @@
 packages: .
-index-state: 2020-06-14T23:29:31Z
-
-package text-ansi
-  ghc-options: -Werror
diff --git a/cabal.project.freeze b/cabal.project.freeze
deleted file mode 100644
--- a/cabal.project.freeze
+++ /dev/null
@@ -1,6 +0,0 @@
-constraints: any.array ==0.5.4.0,
-             any.binary ==0.8.8.0,
-             any.bytestring ==0.10.10.0,
-             any.containers ==0.6.2.1,
-             any.deepseq ==1.4.4.0,
-             any.rts ==1.0
diff --git a/text-ansi.cabal b/text-ansi.cabal
--- a/text-ansi.cabal
+++ b/text-ansi.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 
 name: text-ansi
-version: 0.1.0.1
+version: 0.1.0.2
 category: Data
 synopsis: Text styling for ANSI terminals.
 description:
@@ -19,14 +19,13 @@
 maintainer: Mitchell Rosen <mitchellwrosen@gmail.com>
 homepage: https://github.com/mitchellwrosen/text-ansi
 bug-reports: https://github.com/mitchellwrosen/text-ansi/issues
-copyright: (c) 2018, Mitchell Rosen
+copyright: (c) 2018-2020, Mitchell Rosen
 license: BSD-3-Clause
 license-file: LICENSE
 build-type: Simple
 
 extra-source-files:
   cabal.project
-  cabal.project.freeze
   CHANGELOG.md
   README.md
 
