diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,13 @@
 
+0.5.0.0
+=======
+
+Enhancements:
+
+* Overall performance has been improved due to a change from the lazy to
+  CPS-based Writer monad. (thanks Andrzej Rybczak)
+* Terminal titles are now UTF-8 encoded. (thanks Andrzej Rybczak)
+
 0.4.0.0
 =======
 
diff --git a/src/Data/Terminfo/Eval.hs b/src/Data/Terminfo/Eval.hs
--- a/src/Data/Terminfo/Eval.hs
+++ b/src/Data/Terminfo/Eval.hs
@@ -16,7 +16,7 @@
 
 import Control.Monad
 import Control.Monad.State.Strict
-import Control.Monad.Writer
+import Control.Monad.Writer.CPS
 
 import Data.Bits ((.|.), (.&.), xor)
 import Data.List
diff --git a/src/Graphics/Vty/Platform/Unix/Output/XTermColor.hs b/src/Graphics/Vty/Platform/Unix/Output/XTermColor.hs
--- a/src/Graphics/Vty/Platform/Unix/Output/XTermColor.hs
+++ b/src/Graphics/Vty/Platform/Unix/Output/XTermColor.hs
@@ -18,6 +18,7 @@
 import Blaze.ByteString.Builder.Word (writeWord8)
 
 import qualified Data.ByteString.Char8 as BS8
+import qualified Data.ByteString.UTF8 as UTF8
 import Data.ByteString.Char8 (ByteString)
 import Foreign.Ptr (castPtr)
 
@@ -148,5 +149,5 @@
         sanitize = concatMap sanitizeChar
         sanitizeChar c | not (isPrint c) = showLitChar c ""
                        | otherwise = [c]
-    let buf = BS8.pack $ "\ESC]2;" <> sanitize title <> "\007"
+    let buf = UTF8.fromString $ "\ESC]2;" <> sanitize title <> "\007"
     outputByteBuffer o buf
diff --git a/vty-unix.cabal b/vty-unix.cabal
--- a/vty-unix.cabal
+++ b/vty-unix.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               vty-unix
-version:            0.4.0.0
+version:            0.5.0.0
 synopsis:           Unix backend for Vty
 description:        This package provides Unix terminal support for Vty.
 license:            BSD-3-Clause
@@ -8,7 +8,7 @@
 author:             Jonathan Daugherty
 maintainer:         cygnus@foobox.com
 category:           User Interfaces
-copyright:          (c) 2023 Jonathan Daugherty
+copyright:          (c) 2023-2026 Jonathan Daugherty
 build-type:         Simple
 extra-doc-files:    CHANGELOG.md
 extra-source-files: cbits/gwinsz.h
@@ -50,7 +50,7 @@
     build-depends:    base >= 4.8 && < 5,
                       blaze-builder,
                       bytestring,
-                      mtl,
+                      mtl >= 2.3,
                       unix,
                       terminfo,
                       vty >= 6.6,
