diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+1.1.1.0
+-------
+* Track recent move of `Contravariant` to `base`.
+
 1.1.0.4
 -------
 * Corrected HasUpdate's superclass constraint.
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,5 @@
 Copyright (c) 2014-2015, Edward Kmett
-Copyright (c) 2009-2016, Sven Panne
+Copyright (c) 2009-2018, Sven Panne
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,1 +1,4 @@
-[![Hackage](https://img.shields.io/hackage/v/StateVar.svg)](https://hackage.haskell.org/package/StateVar) [![Build Status](https://travis-ci.org/haskell-opengl/StateVar.png)](https://travis-ci.org/haskell-opengl/StateVar)
+[![Hackage](https://img.shields.io/hackage/v/StateVar.svg)](https://hackage.haskell.org/package/StateVar)
+[![Stackage LTS](https://www.stackage.org/package/StateVar/badge/lts)](https://www.stackage.org/lts/package/StateVar)
+[![Stackage nightly](https://www.stackage.org/package/StateVar/badge/nightly)](https://www.stackage.org/nightly/package/StateVar)
+[![Build Status](https://img.shields.io/travis/haskell-opengl/StateVar/master.svg)](https://travis-ci.org/haskell-opengl/StateVar)
diff --git a/StateVar.cabal b/StateVar.cabal
--- a/StateVar.cabal
+++ b/StateVar.cabal
@@ -1,12 +1,12 @@
 name: StateVar
-version: 1.1.0.4
+version: 1.1.1.0
 synopsis: State variables
 description:
   This package contains state variables, which are references in the IO monad,
   like IORefs or parts of the OpenGL state.
 homepage: https://github.com/haskell-opengl/StateVar
 bug-reports: https://github.com/haskell-opengl/StateVar/issues
-copyright: Copyright (C) 2014-2015 Edward A. Kmett, 2009-2016 Sven Panne
+copyright: Copyright (C) 2014-2015 Edward A. Kmett, 2009-2018 Sven Panne
 license: BSD3
 license-file: LICENSE
 author: Sven Panne and Edward Kmett
@@ -20,8 +20,10 @@
   GHC == 7.6.3
   GHC == 7.8.4
   GHC == 7.10.3
-  GHC == 8.0.1
-  GHC == 8.1
+  GHC == 8.0.2
+  GHC == 8.2.2
+  GHC == 8.4.1
+  GHC == 8.5.*
 cabal-version: >= 1.10
 extra-source-files:
   README.md
@@ -33,7 +35,7 @@
 
   build-depends:
     base         >= 4   && < 5,
-    stm          >= 2.0 && < 2.5,
+    stm          >= 2.2.0.1 && < 2.5,
     transformers >= 0.2 && < 0.6
 
   default-language: Haskell2010
diff --git a/src/Data/StateVar.hs b/src/Data/StateVar.hs
--- a/src/Data/StateVar.hs
+++ b/src/Data/StateVar.hs
@@ -10,7 +10,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Data.StateVar
--- Copyright   :  (c) Edward Kmett 2014-2015, Sven Panne 2009-2016
+-- Copyright   :  (c) Edward Kmett 2014-2015, Sven Panne 2009-2018
 -- License     :  BSD3
 -- 
 -- Maintainer  :  Sven Panne <svenpanne@gmail.com>
@@ -83,6 +83,9 @@
 import Data.Typeable
 import Foreign.Ptr
 import Foreign.Storable
+#if MIN_VERSION_base(4,12,0)
+import Data.Functor.Contravariant
+#endif
 
 --------------------------------------------------------------------
 -- * StateVar
@@ -114,6 +117,12 @@
 -- permit a very limited range of value assignments, and do not report failure.
 data StateVar a = StateVar (IO a) (a -> IO ()) deriving Typeable
 
+#if MIN_VERSION_base(4,12,0)
+instance Contravariant SettableStateVar where
+  contramap f (SettableStateVar k) = SettableStateVar (k . f)
+  {-# INLINE contramap #-}
+#endif
+
 -- | Construct a 'StateVar' from two IO actions, one for reading and one for
 --- writing.
 makeStateVar
@@ -227,7 +236,7 @@
 
 instance HasUpdate (IORef a) a a where
   r $~ f  = liftIO $ atomicModifyIORef r $ \a -> (f a,())
-#if __GLASGOW_HASKELL__ >= 706
+#if MIN_VERSION_base(4,6,0)
   r $~! f = liftIO $ atomicModifyIORef' r $ \a -> (f a,())
 #else
   r $~! f = liftIO $ do
