diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
 # Changelog
 
+## [0.1.0.1] - 2018-05-11
+
+### Changed
+
+- GHC 8.4.x support
+
+- Use `doctest-driver-gen` to run doctests
+
 ## [0.1] - 2018-03-20
 
+[0.1.0.1]: https://github.com/dzhus/csg/compare/0.1...0.1.0.1
 [0.1]: https://github.com/dzhus/csg/tree/0.1
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -113,14 +113,26 @@
 
 csg library performs no surface interpolation when doing ray casting.
 Instead, we only solve ray-surface intersection equation numerically.
+The library was written with Repa/vector compatibility and performance
+in mind.
 
 There're other Haskell libraries for CSG:
 
+- [GlomeTrace][]:
+
+    - Has more ray tracing-specific features, such as light sources,
+      different textures and materials.
+
+    - Unlike `csg`, has no tests or benchmarks.
+
+    - In `csg` solids use the same type as opposed to different types
+      with an existential box in `GlomeTrace`.
+
 - [implicit][]:
 
-    - Offers a much richer operation set
+    - Offers a much richer operation set.
 
-    - Uses function representation for CSG solids
+    - Uses function representation for CSG solids.
 
     - If `implicit` had ray-casting support in early 2012 then I
       probably wouldn't write `csg`.
@@ -128,9 +140,9 @@
 - [mecha][]:
 
     - Only provides types and functions to define solids and export
-      definitions to external formats
+      definitions to external formats.
 
-    - No support for ray casting
+    - No support for ray casting.
 
 [csg-wiki]: https://en.wikipedia.org/wiki/Constructive_solid_geometry
 [hackage-doc]: http://hackage.haskell.org/package/csg/docs/Data-CSG.html
@@ -138,3 +150,4 @@
 [mecha]: https://hackage.haskell.org/package/mecha
 [parser-doc]: http://hackage.haskell.org/package/csg/docs/Data-CSG-Parser.html
 [simple-vec3]: https://hackage.haskell.org/package/simple-vec3
+[glometrace]: https://hackage.haskell.org/package/GlomeTrace
diff --git a/csg.cabal b/csg.cabal
--- a/csg.cabal
+++ b/csg.cabal
@@ -1,22 +1,15 @@
--- This file has been generated from package.yaml by hpack version 0.20.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: f2c1fd60fb41426a33ebda6ab5c083364c788ebc2458967a297173ddb3acb0b0
-
-name:           csg
-version:        0.1
-synopsis:       Analytical CSG (Constructive Solid Geometry) library
-category:       Graphics
-homepage:       https://github.com/dzhus/csg#readme
-bug-reports:    https://github.com/dzhus/csg/issues
-author:         Dmitry Dzhus
-maintainer:     dima@dzhus.org
-license:        BSD3
-license-file:   LICENSE
-build-type:     Simple
-cabal-version:  >= 1.10
-
+cabal-version: >=1.10
+name: csg
+version: 0.1.0.1
+license: BSD3
+license-file: LICENSE
+maintainer: dima@dzhus.org
+author: Dmitry Dzhus
+homepage: https://github.com/dzhus/csg#readme
+bug-reports: https://github.com/dzhus/csg/issues
+synopsis: Analytical CSG (Constructive Solid Geometry) library
+category: Graphics
+build-type: Simple
 extra-source-files:
     CHANGELOG.md
     examples/cube.geo
@@ -24,100 +17,98 @@
     README.md
 
 source-repository head
-  type: git
-  location: https://github.com/dzhus/csg
+    type: git
+    location: https://github.com/dzhus/csg
 
 flag triples
-  description: Use triples of Doubles to represent vectors (slower with vector library arrays)
-  manual: True
-  default: False
+    description:
+        Use triples of Doubles to represent vectors (slower with vector library arrays)
+    default: False
+    manual: True
 
 library
-  hs-source-dirs:
-      src
-  ghc-options: -Wall -Wcompat -O2
-  build-depends:
-      QuickCheck
-    , attoparsec
-    , base <5
-    , bytestring
-    , containers
-    , simple-vec3 >=0.4
-    , strict
-    , transformers
-  if flag(triples)
-    cpp-options: -DWITH_TRIPLES
-  exposed-modules:
-      Data.CSG
-      Data.CSG.Parser
-  other-modules:
-      Paths_csg
-  default-language: Haskell2010
+    exposed-modules:
+        Data.CSG
+        Data.CSG.Parser
+    hs-source-dirs: src
+    other-modules:
+        Paths_csg
+    default-language: Haskell2010
+    ghc-options: -Wall -Wcompat -O2
+    build-depends:
+        QuickCheck <2.12,
+        attoparsec <0.14,
+        base <5,
+        bytestring <0.11,
+        containers <0.6,
+        simple-vec3 ==0.4.*,
+        strict <0.4,
+        transformers <0.6
+    
+    if flag(triples)
+        cpp-options: -DWITH_TRIPLES
 
 executable csg-raycaster
-  main-is: raycaster.hs
-  hs-source-dirs:
-      exe
-  ghc-options: -Wall -Wcompat -O2 -threaded -rtsopts "-with-rtsopts=-N"
-  build-depends:
-      QuickCheck
-    , base <5
-    , csg
-    , gloss
-    , gloss-raster
-    , simple-vec3 >=0.4
-    , strict
-    , system-filepath
-    , turtle
-  other-modules:
-      Paths_csg
-  default-language: Haskell2010
+    main-is: raycaster.hs
+    hs-source-dirs: exe
+    other-modules:
+        Paths_csg
+    default-language: Haskell2010
+    ghc-options: -Wall -Wcompat -O2 -threaded -rtsopts -with-rtsopts=-N
+    build-depends:
+        QuickCheck <2.12,
+        base <5,
+        csg -any,
+        gloss <1.13,
+        gloss-raster <1.13,
+        simple-vec3 ==0.4.*,
+        strict <0.4,
+        system-filepath <0.5,
+        turtle <1.6
 
 test-suite csg-doctests
-  type: exitcode-stdio-1.0
-  main-is: doctest-driver.hs
-  hs-source-dirs:
-      tests
-  ghc-options: -Wall -Wcompat -O2 -threaded
-  build-depends:
-      base <5
-    , doctest
-    , doctest-discover >=0.1.0.8
-    , simple-vec3 >=0.4
-  other-modules:
-      Main
-      Paths_csg
-  default-language: Haskell2010
+    type: exitcode-stdio-1.0
+    main-is: doctest-driver.hs
+    hs-source-dirs: tests
+    other-modules:
+        Main
+        Paths_csg
+    default-language: Haskell2010
+    ghc-options: -Wall -Wcompat -O2 -threaded
+    build-depends:
+        base <5,
+        doctest <0.16,
+        doctest-driver-gen <0.3,
+        simple-vec3 ==0.4.*
 
 test-suite csg-tests
-  type: exitcode-stdio-1.0
-  main-is: Main.hs
-  hs-source-dirs:
-      tests
-  ghc-options: -Wall -Wcompat -O2
-  build-depends:
-      base <5
-    , bytestring
-    , csg
-    , simple-vec3 >=0.4
-    , tasty
-    , tasty-hunit
-    , tasty-quickcheck
-  other-modules:
-      Paths_csg
-  default-language: Haskell2010
+    type: exitcode-stdio-1.0
+    main-is: Main.hs
+    hs-source-dirs: tests
+    other-modules:
+        Paths_csg
+    default-language: Haskell2010
+    ghc-options: -Wall -Wcompat -O2
+    build-depends:
+        base <5,
+        bytestring <0.11,
+        csg -any,
+        simple-vec3 ==0.4.*,
+        tasty <1.1,
+        tasty-hunit <0.11,
+        tasty-quickcheck <0.10
 
 benchmark csg-benchmark
-  type: exitcode-stdio-1.0
-  main-is: benchmark/Benchmark.hs
-  ghc-options: -Wall -Wcompat -O2
-  build-depends:
-      base <5
-    , criterion
-    , csg
-    , simple-vec3 >=0.4
-    , strict
-    , vector
-  other-modules:
-      Paths_csg
-  default-language: Haskell2010
+    type: exitcode-stdio-1.0
+    main-is: benchmark/Benchmark.hs
+    other-modules:
+        Paths_csg
+    default-language: Haskell2010
+    ghc-options: -Wall -Wcompat -O2
+    build-depends:
+        base <5,
+        criterion <1.4,
+        csg -any,
+        simple-vec3 ==0.4.*,
+        strict <0.4,
+        vector <0.13
diff --git a/exe/raycaster.hs b/exe/raycaster.hs
--- a/exe/raycaster.hs
+++ b/exe/raycaster.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE OverloadedStrings #-}
 
@@ -15,7 +16,10 @@
 
 import GHC.Float
 import Data.String
+#if MIN_VERSION_base(4,11,0)
+#else
 import Data.Monoid
+#endif
 import Data.Version
 
 import Graphics.Gloss.Data.Color
diff --git a/tests/doctest-driver.hs b/tests/doctest-driver.hs
--- a/tests/doctest-driver.hs
+++ b/tests/doctest-driver.hs
@@ -1,1 +1,1 @@
-{-# OPTIONS_GHC -F -pgmF doctest-discover #-}
+{-# OPTIONS_GHC -F -pgmF doctest-driver-gen -optF src #-}
