diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
 # CHANGELOG
 
+## 3.0.0
+
+* GHC 8 compatible release
+
+### Removed
+
+* `open-union` dependency
+
 ## 2.0.0
 
 ### Added
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,5 @@
+# dom-parser
+
+[![Build Status](https://travis-ci.org/typeable/dom-parser.svg?branch=master)](https://travis-ci.org/typeable/dom-parser)
+
+Simple monadic DOM parser
diff --git a/dom-parser.cabal b/dom-parser.cabal
--- a/dom-parser.cabal
+++ b/dom-parser.cabal
@@ -1,5 +1,5 @@
 name:                dom-parser
-version:             2.0.0
+version:             3.0.0
 synopsis:            Simple monadic DOM parser
 license:             MIT
 license-file:        LICENSE
@@ -7,12 +7,10 @@
 maintainer:          makeit@typeable.io
 category:            XML
 build-type:          Simple
-extra-source-files:  CHANGELOG.md
 cabal-version:       >=1.10
-
-extra-source-files: CHANGELOG.md
-
 homepage:            https://github.com/typeable/dom-parser
+extra-source-files:  CHANGELOG.md
+                   , README.md
 
 source-repository head
   type:     git
@@ -48,12 +46,10 @@
                      , containers
                      , lens
                      , mtl
-                     , open-union >= 0.2
                      , scientific
                      , semigroups
                      , text
                      , transformers
-                     , type-fun
                      , xml-conduit
                      , xml-lens
   exposed-modules: Text.XML.DOM.Parser
diff --git a/src/Text/XML/DOM/Parser/FromDom.hs b/src/Text/XML/DOM/Parser/FromDom.hs
--- a/src/Text/XML/DOM/Parser/FromDom.hs
+++ b/src/Text/XML/DOM/Parser/FromDom.hs
@@ -4,7 +4,6 @@
   , proxyFromDom
     -- * Explicit methods for convenience
   , elementFromDom
-  , unionFromDom
   , textFromDom
   , stringFromDom
   , charFromDom
@@ -21,7 +20,6 @@
 import Control.Applicative
 import Control.Lens
 import Data.Fixed
-import Data.OpenUnion
 import Data.Scientific
 import Data.Text as T hiding (empty)
 import Data.Typeable
@@ -29,7 +27,6 @@
 import Text.XML
 import Text.XML.DOM.Parser.Content
 import Text.XML.DOM.Parser.Types
-import TypeFun.Data.List hiding (Union)
 
 proxyFromDom
   :: forall proxy m a
@@ -115,23 +112,6 @@
 -- are striped.
 boolFromDom :: (Monad m) => DomParserT Identity m Bool
 boolFromDom = parseContent readBool
-
-instance FromDom (Union '[]) where
-  fromDom = empty
-
-instance
-  ( Typeable a, FromDom a, FromDom (Union as)
-  , SubList as (a ': as) )
-  => FromDom (Union (a ': as)) where
-  -- fromDom :: forall m. (DomParserMonad m) => m a
-  fromDom = (liftUnion <$> (proxyFromDom (Proxy :: Proxy a)))
-    <|> (reUnion <$> (proxyFromDom (Proxy :: Proxy (Union as))))
-
-unionFromDom
-  :: (Monad m, FromDom (Union as))
-  => proxy as
-  -> DomParserT Identity m (Union as)
-unionFromDom _ = fromDom
 
 instance FromDom Element where
   fromDom = elementFromDom
