diff --git a/library/Optima.hs b/library/Optima.hs
--- a/library/Optima.hs
+++ b/library/Optima.hs
@@ -41,7 +41,7 @@
 import qualified Data.Text as Text
 import Optima.Prelude hiding (group)
 import qualified Options.Applicative as Optparse
-import qualified Text.Builder as TextBuilder
+import qualified TextBuilder
 
 -- * Types
 
@@ -73,7 +73,7 @@
 
 -- |
 -- Parameter description.
-data ValueFormat a = EnumValueFormat [TextBuilder.Builder] | UnspecifiedFormat
+data ValueFormat a = EnumValueFormat [TextBuilder.TextBuilder] | UnspecifiedFormat
 
 -- * Instances
 
@@ -257,7 +257,7 @@
 -- |
 -- Derive value format specification from the Enum instance and
 -- explicit mapping of values to their representations.
-formattedByEnumUsingBuilderMapping :: (Bounded a, Enum a) => (a -> TextBuilder.Builder) -> ValueFormat a
+formattedByEnumUsingBuilderMapping :: (Bounded a, Enum a) => (a -> TextBuilder.TextBuilder) -> ValueFormat a
 formattedByEnumUsingBuilderMapping valueRepresentation =
   let values = enumFromTo minBound (asTypeOf maxBound (descriptionToA description))
       descriptionToA = undefined :: ValueFormat a -> a
@@ -271,24 +271,24 @@
 
 -- ** Rendering building
 
-buildValueFormat :: ValueFormat a -> TextBuilder.Builder
+buildValueFormat :: ValueFormat a -> TextBuilder.TextBuilder
 buildValueFormat = \case
   EnumValueFormat values -> "(" <> TextBuilder.intercalate ", " values <> ")"
   UnspecifiedFormat -> mempty
 
-buildHelp :: Text -> ValueFormat a -> TextBuilder.Builder
+buildHelp :: Text -> ValueFormat a -> TextBuilder.TextBuilder
 buildHelp description valueFormat =
   TextBuilder.intercalate
     (TextBuilder.char ' ')
     (notNull (TextBuilder.text description) <> notNull (buildValueFormat valueFormat))
   where
-    notNull :: TextBuilder.Builder -> [TextBuilder.Builder]
-    notNull = validate (not . TextBuilder.null)
+    notNull :: TextBuilder.TextBuilder -> [TextBuilder.TextBuilder]
+    notNull = validate (not . TextBuilder.isEmpty)
 
 -- ** Rendering
 
-renderIfNotEmpty :: TextBuilder.Builder -> Maybe Text
-renderIfNotEmpty = fmap TextBuilder.run . validate (not . TextBuilder.null)
+renderIfNotEmpty :: TextBuilder.TextBuilder -> Maybe Text
+renderIfNotEmpty = fmap TextBuilder.toText . validate (not . TextBuilder.isEmpty)
 
 prefixIfMakesSense :: Text -> Text -> Text
 prefixIfMakesSense prefix text =
diff --git a/optima.cabal b/optima.cabal
--- a/optima.cabal
+++ b/optima.cabal
@@ -1,20 +1,19 @@
 cabal-version: 3.0
-name:          optima
-version:       0.4.0.5
-category:      CLI, Parsing, Options
-synopsis:      Simple command line interface arguments parser
-homepage:      https://github.com/metrix-ai/optima
-bug-reports:   https://github.com/metrix-ai/optima/issues
-author:        Nikita Volkov <nikita.y.volkov@mail.ru>
-maintainer:    Metrix.AI Tech Team <tech@metrix.ai>
-copyright:     (c) 2018, Metrix.AI
-license:       MIT
-license-file:  LICENSE
+name: optima
+version: 0.4.0.6
+category: CLI, Parsing, Options
+synopsis: Simple command line interface arguments parser
+homepage: https://github.com/metrix-ai/optima
+bug-reports: https://github.com/metrix-ai/optima/issues
+author: Nikita Volkov <nikita.y.volkov@mail.ru>
+maintainer: Metrix.AI Tech Team <tech@metrix.ai>
+copyright: (c) 2018, Metrix.AI
+license: MIT
+license-file: LICENSE
 
 common language-settings
+  default-language: Haskell2010
   default-extensions:
-    NoImplicitPrelude
-    NoMonomorphismRestriction
     ApplicativeDo
     BangPatterns
     BinaryLiterals
@@ -40,6 +39,8 @@
     LiberalTypeSynonyms
     MultiParamTypeClasses
     MultiWayIf
+    NoImplicitPrelude
+    NoMonomorphismRestriction
     NumericUnderscores
     OverloadedLabels
     OverloadedStrings
@@ -60,27 +61,25 @@
     UndecidableInstances
     ViewPatterns
 
-  default-language:   Haskell2010
-
 library
-  import:          language-settings
-  hs-source-dirs:  library
+  import: language-settings
+  hs-source-dirs: library
   exposed-modules: Optima
-  other-modules:   Optima.Prelude
+  other-modules: Optima.Prelude
   build-depends:
-    , attoparsec >=0.13 && <0.15
-    , attoparsec-data >=1.0.5.2 && <1.1
-    , base >=4.9 && <5
-    , optparse-applicative >=0.15 && <0.19
-    , text >=1.2 && <3
-    , text-builder >=0.6 && <0.7
+    attoparsec >=0.13 && <0.15,
+    attoparsec-data >=1.0.5.2 && <1.1,
+    base >=4.9 && <5,
+    optparse-applicative >=0.15 && <0.19,
+    text >=1.2 && <3,
+    text-builder ^>=1,
 
 test-suite demo
-  import:         language-settings
-  type:           exitcode-stdio-1.0
+  import: language-settings
+  type: exitcode-stdio-1.0
   hs-source-dirs: demo
-  main-is:        Main.hs
+  main-is: Main.hs
   build-depends:
-    , attoparsec-data >=1 && <2
-    , optima
-    , rerebase >=1 && <2
+    attoparsec-data >=1 && <2,
+    optima,
+    rerebase >=1 && <2,
