diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
 ## Changelog for the `threepenny-gui` package
 
+**0.8.2.3**
+
+* Compatibility with GHC-8.4.1
+* Bump dependencies to allow `aeson` 1.3.0.0
+* Bump dependencies to allow `exceptions` 0.10.0
+* Bump dependencies to allow `snap-server` 1.1.0.0
+
 **0.8.2.2** – Maintenance release
 
 * Bump dependencies to allow `exceptions` 0.9.0
diff --git a/src/Graphics/UI/Threepenny/Internal.hs b/src/Graphics/UI/Threepenny/Internal.hs
--- a/src/Graphics/UI/Threepenny/Internal.hs
+++ b/src/Graphics/UI/Threepenny/Internal.hs
@@ -21,7 +21,7 @@
     EventData, domEvent, unsafeFromJSON,
     ) where
 
-import           Control.Applicative                   (Applicative)
+import           Control.Applicative                   (Applicative(..))
 import           Control.Monad
 import           Control.Monad.Catch
 import           Control.Monad.Fix
@@ -288,11 +288,11 @@
     fmap f = UI . fmap f . unUI
 
 instance Applicative UI where
-    pure  = return
+    pure  = UI . pure
     (<*>) = ap
 
 instance Monad UI where
-    return  = UI . return
+    return  = pure
     m >>= k = UI $ unUI m >>= unUI . k
 
 instance MonadIO UI where
diff --git a/threepenny-gui.cabal b/threepenny-gui.cabal
--- a/threepenny-gui.cabal
+++ b/threepenny-gui.cabal
@@ -1,5 +1,5 @@
 Name:                threepenny-gui
-Version:             0.8.2.2
+Version:             0.8.2.3
 Synopsis:            GUI framework that uses the web browser as a display.
 Description:
     Threepenny-GUI is a GUI framework that uses the web browser as a display.
@@ -107,22 +107,22 @@
   if flag(rebug)
       cpp-options:  -DREBUG
       ghc-options:  -O2
-  build-depends:     base                   >= 4.6   && < 4.11
-                    ,aeson                  (>= 0.7 && < 0.10) || == 0.11.* || (>= 1.0 && < 1.3)
+  build-depends:     base                   >= 4.6   && < 4.12
+                    ,aeson                  (>= 0.7 && < 0.10) || == 0.11.* || (>= 1.0 && < 1.4)
                     ,async                  >= 2.0   && < 2.3
                     ,bytestring             >= 0.9.2 && < 0.11
                     ,containers             >= 0.4.2 && < 0.6
                     ,data-default           >= 0.5.0 && < 0.8
                     ,deepseq                >= 1.3.0 && < 1.5
-                    ,exceptions             >= 0.6   && < 0.10
+                    ,exceptions             >= 0.6   && < 0.11
                     ,filepath               >= 1.3.0 && < 1.5.0
                     ,file-embed             >= 0.0.10 && < 0.1
                     ,hashable               >= 1.1.0 && < 1.3
                     ,safe                   == 0.3.*
-                    ,snap-server            >= 0.9.0 && < 1.1
+                    ,snap-server            >= 0.9.0 && < 1.2
                     ,snap-core              >= 0.9.0 && < 1.1
                     ,stm                    >= 2.2    && < 2.5
-                    ,template-haskell       >= 2.7.0  && < 2.13
+                    ,template-haskell       >= 2.7.0  && < 2.14
                     ,text                   >= 0.11   && < 1.3
                     ,transformers           >= 0.3.0  && < 0.6
                     ,unordered-containers   == 0.2.*
@@ -134,6 +134,8 @@
       build-depends: network-uri            >= 2.6    && < 2.7
   else
       build-depends: network                >= 2.3.0  && < 2.6
+  if impl(ghc >= 8.0)
+      ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
 
 Executable threepenny-examples-bartab
     if flag(buildExamples)
@@ -166,7 +168,7 @@
     else
         buildable: False
     main-is:           Canvas.hs
-    other-modules:     Paths
+    other-modules:     Paths_threepenny_gui, Paths
     hs-source-dirs:    samples
 
 Executable threepenny-examples-chat
