diff --git a/Language/Symantic/Document/Plain.hs b/Language/Symantic/Document/Plain.hs
--- a/Language/Symantic/Document/Plain.hs
+++ b/Language/Symantic/Document/Plain.hs
@@ -25,7 +25,6 @@
 plain :: Plain -> TLB.Builder
 plain (Plain d) = d
 
-
 instance Semigroup Plain where
 	Plain x <> Plain y = Plain (x <> y)
 instance Monoid Plain where
diff --git a/Language/Symantic/Document/Sym.hs b/Language/Symantic/Document/Sym.hs
--- a/Language/Symantic/Document/Sym.hs
+++ b/Language/Symantic/Document/Sym.hs
@@ -1,14 +1,11 @@
 {-# LANGUAGE PolyKinds #-}
-{-# LANGUAGE ViewPatterns #-}
 module Language.Symantic.Document.Sym where
 
 import Data.Char (Char)
-import Data.Eq (Eq(..))
 import Data.Foldable (Foldable(..))
 import Data.Function ((.))
 import Data.Functor (Functor(..))
 import Data.Int (Int, Int64)
-import Data.Maybe (Maybe(..))
 import Data.Semigroup (Semigroup(..))
 import Data.String (String, IsString)
 import Data.Text (Text)
@@ -63,9 +60,9 @@
 	spaces i  = replicate i space
 	int       = integer . toInteger
 	char      = \case '\n' -> eol; c -> charH c
-	string    = catV . fmap stringH . lines
-	text      = catV . fmap textH   . lines
-	ltext     = catV . fmap ltextH  . lines
+	string    = catV . fmap stringH . L.lines
+	text      = catV . fmap textH   . T.lines
+	ltext     = catV . fmap ltextH  . TL.lines
 	catH      = foldr (<>) empty
 	catV l    = if null l then empty else foldr1 (\a acc -> a <> eol <> acc) l
 	paren   d = charH '('   <> d <> charH ')'
@@ -232,56 +229,5 @@
 	 -> (tr -> tr -> tr -> tr)
 	trans3 f t1 t2 t3 = trans (f (unTrans t1) (unTrans t2) (unTrans t3))
 
-
--- * Class 'SplitOnCharWithEmpty'
-class SplitOnCharWithEmpty t where
-	splitOnCharWithEmpty :: Char -> t -> [t]
-instance SplitOnCharWithEmpty Text where
-	splitOnCharWithEmpty sep t =
-		case T.break (== sep) t of
-		 (chunk, T.uncons -> Just (_, rest)) -> chunk : splitOnCharWithEmpty sep rest
-		 (chunk, _) -> [chunk]
-instance SplitOnCharWithEmpty TL.Text where
-	splitOnCharWithEmpty sep t =
-		case TL.break (== sep) t of
-		 (chunk, TL.uncons -> Just (_, rest)) -> chunk : splitOnCharWithEmpty sep rest
-		 (chunk, _) -> [chunk]
-instance SplitOnCharWithEmpty String where
-	splitOnCharWithEmpty sep t =
-		case L.break (== sep) t of
-		 (chunk, _:rest) -> chunk : splitOnCharWithEmpty sep rest
-		 (chunk, []) -> [chunk]
-
-lines :: SplitOnCharWithEmpty t => t -> [t]
-lines = splitOnCharWithEmpty '\n'
-
 int64OfInt :: Int -> Int64
 int64OfInt = fromInteger . toInteger
-
-
-{-
--- * Class 'SplitOnChar'
-
-class SplitOnChar t where
-	splitOnChar :: Char -> t -> [t]
-instance SplitOnChar Text where
-	splitOnChar sep t =
-		case Text.uncons t of
-		 Nothing -> []
-		 Just (x, xs) ->
-			if x == sep
-			then splitOnChar sep xs
-			else
-				let (chunk, rest) = Text.break (== sep) t in
-				chunk:splitOnChar sep rest
-instance SplitOnChar String where
-	splitOnChar sep t =
-		case t of
-		 [] -> []
-		 x:xs ->
-			if x == sep
-			then splitOnChar sep xs
-			else
-				let (chunk, rest) = List.break (== sep) t in
-				chunk:splitOnChar sep rest
--}
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,3 +1,3 @@
-resolver: nightly-2017-02-03
+resolver: lts-10.5
 packages:
 - '.'
diff --git a/symantic-document.cabal b/symantic-document.cabal
--- a/symantic-document.cabal
+++ b/symantic-document.cabal
@@ -1,33 +1,41 @@
-author: Julien Moutinho <julm+symantic@autogeree.net>
--- bug-reports: http://bug.autogeree.net/symantic
-build-type: Simple
-cabal-version: >= 1.8
+name: symantic-document
+-- PVP:  +-+------- breaking API changes
+--       | | +----- non-breaking API additions
+--       | | | +--- code changes with no API change
+version: 0.0.0.20180213
 category: Text
--- data-dir: data
--- data-files: 
+synopsis: Document symantics.
 description: Symantics for generating documents.
-extra-source-files:
-  stack.yaml
-extra-tmp-files:
--- homepage: http://pad.autogeree.net/informatique/symantic
+extra-doc-files:
 license: GPL-3
 license-file: COPYING
-maintainer: Julien Moutinho <julm+symantic@autogeree.net>
-name: symantic-document
 stability: experimental
-synopsis: Document symantics.
-tested-with: GHC==8.0.2
--- PVP:  +-+------- breaking API changes
---       | | +----- non-breaking API additions
---       | | | +--- code changes with no API change
-version: 0.0.0.20170623
+author:      Julien Moutinho <julm+symantic@autogeree.net>
+maintainer:  Julien Moutinho <julm+symantic@autogeree.net>
+bug-reports: Julien Moutinho <julm+symantic@autogeree.net>
+-- homepage:
 
+build-type: Simple
+cabal-version: >= 1.10
+tested-with: GHC==8.2.2
+extra-source-files:
+  stack.yaml
+extra-tmp-files:
+
 source-repository head
   location: git://git.autogeree.net/symantic
   type:     git
 
 Library
-  extensions:
+  exposed-modules:
+    Language.Symantic.Document
+    Language.Symantic.Document.ANSI
+    Language.Symantic.Document.Dim
+    Language.Symantic.Document.Plain
+    Language.Symantic.Document.Sym
+    Language.Symantic.Document.Valid
+  default-language: Haskell2010
+  default-extensions:
     NoImplicitPrelude
     DataKinds
     DefaultSignatures
@@ -42,16 +50,13 @@
     TupleSections
     TypeFamilies
     TypeOperators
-  ghc-options: -Wall -fno-warn-tabs
-  exposed-modules:
-    Language.Symantic.Document
-    Language.Symantic.Document.ANSI
-    Language.Symantic.Document.Dim
-    Language.Symantic.Document.Plain
-    Language.Symantic.Document.Sym
-    Language.Symantic.Document.Valid
+  ghc-options:
+    -Wall
+    -Wincomplete-uni-patterns
+    -Wincomplete-record-updates
+    -fno-warn-tabs
+    -fhide-source-paths
   build-depends:
-    ansi-terminal
-    , base >= 4.6 && < 5
-    , text
-    -- , transformers >= 0.4 && < 0.5
+      ansi-terminal >= 0.7
+    , base          >= 4.6 && < 5
+    , text          >= 1.2
