diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
-# hindent [![Hackage](https://img.shields.io/hackage/v/hindent.svg?style=flat)](https://hackage.haskell.org/package/hindent)
+
+# hindent [![Hackage](https://img.shields.io/hackage/v/hindent.svg?style=flat)](https://hackage.haskell.org/package/hindent) [![Build Status](https://travis-ci.org/chrisdone/hindent.png)](https://travis-ci.org/chrisdone/hindent)
 
 Extensible Haskell pretty printer. Both a library and an
 executable. Currently a work in progress (see
diff --git a/elisp/hindent.el b/elisp/hindent.el
--- a/elisp/hindent.el
+++ b/elisp/hindent.el
@@ -30,6 +30,13 @@
   :type 'string
   :safe #'stringp)
 
+(defcustom hindent-process-path
+  "hindent"
+  "Location where the hindent executable is located."
+  :group 'haskell
+  :type 'string
+  :safe #'stringp)
+
 ;;;###autoload
 (defun hindent/reformat-decl ()
   "Re-format the current declaration by parsing and pretty
@@ -47,7 +54,7 @@
               (let ((ret (apply #'call-process-region
                                 (append (list (car start-end)
                                               (cdr start-end)
-                                              "hindent"
+                                              hindent-process-path
                                               nil ; delete
                                               temp ; output
                                               nil
diff --git a/hindent.cabal b/hindent.cabal
--- a/hindent.cabal
+++ b/hindent.cabal
@@ -1,5 +1,5 @@
 name:                hindent
-version:             4.4.0
+version:             4.4.1
 synopsis:            Extensible Haskell pretty printer
 description:         Extensible Haskell pretty printer. Both a library and an executable.
                      .
@@ -13,6 +13,8 @@
 category:            Development
 build-type:          Simple
 cabal-version:       >=1.8
+homepage: http://www.github.com/chrisdone/hindent
+bug-reports: https://github.com/chrisdone/hindent/issues
 data-files:          elisp/hindent.el vim/hindent.vim
 extra-source-files:  README.md
                      test/chris-done/expected/*.exp
@@ -24,6 +26,10 @@
                      test/johan-tibell/expected/*.exp
                      test/johan-tibell/tests/*.test
 
+source-repository head
+    type:           git
+    location:       https://github.com/chrisdone/hindent
+
 library
   hs-source-dirs:    src/
   ghc-options:       -Wall -O2
@@ -35,7 +41,7 @@
                      HIndent.Styles.ChrisDone
                      HIndent.Styles.JohanTibell
                      HIndent.Styles.Gibiansky
-  build-depends:     base >= 4 && <5
+  build-depends:     base >= 4.7 && <5
                    , data-default
                    , haskell-src-exts == 1.16.*
                    , monad-loops
diff --git a/src/HIndent/Pretty.hs b/src/HIndent/Pretty.hs
--- a/src/HIndent/Pretty.hs
+++ b/src/HIndent/Pretty.hs
@@ -544,7 +544,7 @@
       TyInfix _ a op b ->
         depend (do pretty a
                    space)
-               (depend (do pretty op
+               (depend (do prettyInfixOp op
                            space)
                        (pretty b))
       TyKind _ ty k ->
@@ -720,6 +720,7 @@
                         do write "| "
                            pretty p)
                      alts))
+exp (Lit _ lit) = prettyInternal lit
 exp x@XTag{} = pretty' x
 exp x@XETag{} = pretty' x
 exp x@XPcdata{} = pretty' x
@@ -728,7 +729,6 @@
 exp x@Var{} = pretty' x
 exp x@IPVar{} = pretty' x
 exp x@Con{} = pretty' x
-exp x@Lit{} = pretty' x
 exp x@CorePragma{} = pretty' x
 exp x@SCCPragma{} = pretty' x
 exp x@GenPragma{} = pretty' x
@@ -1238,7 +1238,23 @@
   prettyInternal = pretty'
 
 instance Pretty Literal where
-  prettyInternal = pretty'
+  prettyInternal (String _ _ rep) = do
+    write "\""
+    string rep
+    write "\""
+  prettyInternal (Char _ _ rep) = do
+    write "'"
+    string rep
+    write "'"
+  prettyInternal (PrimString _ _ rep) = do
+    write "\""
+    string rep
+    write "\"#"
+  prettyInternal (PrimChar _ _ rep) = do
+    write "'"
+    string rep
+    write "'#"
+  prettyInternal x = pretty' x
 
 instance Pretty Name where
   prettyInternal = pretty'
diff --git a/src/HIndent/Styles/Gibiansky.hs b/src/HIndent/Styles/Gibiansky.hs
--- a/src/HIndent/Styles/Gibiansky.hs
+++ b/src/HIndent/Styles/Gibiansky.hs
@@ -231,7 +231,7 @@
 letExpr (Let _ binds result) = do
   cols <- depend (write "let ") $ do
             col <- getColumn
-            pretty binds
+            writeWhereBinds binds
             return $ col - 4
   column cols $ do
     newline
@@ -468,9 +468,11 @@
     case alts of 
       [] -> return ()
       first:rest -> do
+        printComments Before first
         prettyPr first
         forM_ (zip alts rest) $ \(prev, cur) -> do
           replicateM_ (max 1 $ lineDelta cur prev) newline
+          printComments Before cur
           prettyPr cur
 
   where
@@ -611,7 +613,9 @@
                                     write " "
                                     return (name, pat, rhs, mbinds)
 
-    pretty name
+    case name of
+      Symbol _ name' -> string name'
+      name' -> pretty name'
     write " "
     funBody pat rhs mbinds
 decls decl = prettyNoExt decl
diff --git a/test/gibiansky/expected/26.exp b/test/gibiansky/expected/26.exp
new file mode 100644
--- /dev/null
+++ b/test/gibiansky/expected/26.exp
@@ -0,0 +1,1 @@
+a +++ b = a * a + b
diff --git a/test/gibiansky/expected/27.exp b/test/gibiansky/expected/27.exp
new file mode 100644
--- /dev/null
+++ b/test/gibiansky/expected/27.exp
@@ -0,0 +1,27 @@
+case x of
+  -- First
+  x -> y
+
+case x of
+  -- First
+  x -> y
+>
+  -- Second
+  x -> y
+
+case x of
+  -- First
+  x -> y
+>
+  -- Second
+  x -> y
+>
+  -- Second
+  x -> y
+
+case x of
+  -- First
+  x -> y
+>
+  -- Second
+  x -> y
diff --git a/test/gibiansky/expected/28.exp b/test/gibiansky/expected/28.exp
new file mode 100644
--- /dev/null
+++ b/test/gibiansky/expected/28.exp
@@ -0,0 +1,17 @@
+"ß"
+
+-- Test it in pattern context too
+"ß" = 3
+
+'ß'
+
+'ß' = 3
+
+"ß"#
+
+-- Test it in pattern context too
+"ß"# = 3
+
+'ß'#
+
+'ß'# = 3
diff --git a/test/gibiansky/expected/29.exp b/test/gibiansky/expected/29.exp
new file mode 100644
--- /dev/null
+++ b/test/gibiansky/expected/29.exp
@@ -0,0 +1,29 @@
+a =
+  let x = y
+      z = 10
+  in z
+
+a =
+  let x = y
+>
+      z = 10
+  in z
+
+a =
+  let x = y
+>
+      z = 10
+>
+>
+      z' = 10
+  in z
+
+a =
+  let x = y
+>
+      -- Comment
+      z = 10
+>
+      -- Comment some more
+      z' = 10
+  in z
diff --git a/test/gibiansky/tests/26.test b/test/gibiansky/tests/26.test
new file mode 100644
--- /dev/null
+++ b/test/gibiansky/tests/26.test
@@ -0,0 +1,1 @@
+a +++ b = a * a + b
diff --git a/test/gibiansky/tests/27.test b/test/gibiansky/tests/27.test
new file mode 100644
--- /dev/null
+++ b/test/gibiansky/tests/27.test
@@ -0,0 +1,28 @@
+case x of
+  -- First
+  x -> y
+
+case x of
+  -- First
+  x -> y
+>
+  -- Second
+  x -> y
+
+case x of
+  -- First
+  x -> y
+>
+  -- Second
+  x -> y
+>
+  -- Second
+  x -> y
+
+case x of
+  -- First
+  x -> y
+>
+  -- Second
+>
+  x -> y
diff --git a/test/gibiansky/tests/28.test b/test/gibiansky/tests/28.test
new file mode 100644
--- /dev/null
+++ b/test/gibiansky/tests/28.test
@@ -0,0 +1,17 @@
+"ß"
+
+-- Test it in pattern context too
+"ß" = 3
+
+'ß'
+
+'ß' = 3
+
+"ß"#
+
+-- Test it in pattern context too
+"ß"# = 3
+
+'ß'#
+
+'ß'# = 3
diff --git a/test/gibiansky/tests/29.test b/test/gibiansky/tests/29.test
new file mode 100644
--- /dev/null
+++ b/test/gibiansky/tests/29.test
@@ -0,0 +1,29 @@
+a =
+  let x = y
+      z = 10
+  in z
+
+a =
+  let x = y
+>
+      z = 10
+  in z
+
+a =
+  let x = y
+>
+      z = 10
+>
+>
+      z' = 10
+  in z
+
+a =
+  let x = y
+>
+      -- Comment
+      z = 10
+>
+      -- Comment some more
+      z' = 10
+  in z
