diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for extensible-effects-concurrent
 
+## 0.12.1
+
+- Fix build errors with GHC-8.6
+
 ## 0.12.0
 
 - Add implicit SchedulerProxy
diff --git a/extensible-effects-concurrent.cabal b/extensible-effects-concurrent.cabal
--- a/extensible-effects-concurrent.cabal
+++ b/extensible-effects-concurrent.cabal
@@ -1,5 +1,5 @@
 name:           extensible-effects-concurrent
-version:        0.12.0
+version:        0.12.1
 description:    Please see the README on GitHub at <https://github.com/sheyll/extensible-effects-concurrent#readme>
 synopsis:       Message passing concurrency as extensible-effect
 homepage:       https://github.com/sheyll/extensible-effects-concurrent#readme
@@ -7,7 +7,7 @@
 author:         Sven Heyll
 maintainer:     sven.heyll@gmail.com
 category:       Concurrency, Control, Effect
-tested-with:    GHC==8.4.3, GHC==8.4.4
+tested-with:    GHC==8.2.2, GHC==8.4.3, GHC==8.4.4, GHC==8.6.1
 copyright:      Copyright Sven Heyll
 license:        BSD3
 license-file:   LICENSE
diff --git a/src/Control/Eff/Concurrent/Api/Observer/Queue.hs b/src/Control/Eff/Concurrent/Api/Observer/Queue.hs
--- a/src/Control/Eff/Concurrent/Api/Observer/Queue.hs
+++ b/src/Control/Eff/Concurrent/Api/Observer/Queue.hs
@@ -168,18 +168,19 @@
   )
 
 withQueue
-  :: forall a b e
+  :: forall a b e len
    . ( HasCallStack
      , Typeable a
      , Show (Observation a)
      , HasLogging IO e
      , MonadCatch (Eff e)
+     , Integral len
      )
-  => Int
+  => len
   -> Eff (ObservationQueueReader a ': e) b
   -> Eff e b
 withQueue queueLimit e = do
-  q    <- liftIO (newTBQueueIO queueLimit)
+  q    <- liftIO (newTBQueueIO (fromIntegral queueLimit))
   res  <- Safe.tryAny (runReader (ObservationQueue q) e)
   rest <- liftIO (atomically (flushTBQueue q))
   unless
diff --git a/src/Control/Eff/Log/Channel.hs b/src/Control/Eff/Log/Channel.hs
--- a/src/Control/Eff/Log/Channel.hs
+++ b/src/Control/Eff/Log/Channel.hs
@@ -43,15 +43,15 @@
 -- >
 --
 withAsyncLogChannel
-  :: forall message a
-   . (NFData message)
-  => Int -- ^ Size of the log message input queue. If the queue is full, message
-        -- are dropped silently.
+  :: forall message a len
+   . (NFData message, Integral len)
+  => len -- ^ Size of the log message input queue. If the queue is full, message
+         -- are dropped silently.
   -> LogWriter message IO -- ^ An IO action to write the log messages
   -> (LogChannel message -> IO a)
   -> IO a
 withAsyncLogChannel queueLen ioWriter action = do
-  msgQ <- newTBQueueIO (fromIntegral @Int queueLen)
+  msgQ <- newTBQueueIO (fromIntegral queueLen)
   withAsync (logLoop msgQ) (action . ConcurrentLogChannel msgQ)
  where
   logLoop tq = do
