diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -6,15 +6,15 @@
 
 ## Installation
 
-RAW-Feldspar can be installed directly from [Hackage](http://hackage.haskell.org/package/raw-feldspar), preferably in a [sandbox](https://www.haskell.org/cabal/users-guide/installing-packages.html#developing-with-sandboxes):
+RAW-Feldspar can be installed directly from [Hackage](http://hackage.haskell.org/package/raw-feldspar):
 
-    cabal install raw-feldspar
+    cabal new-install raw-feldspar
 
 The installation can be sped up a bit (and the size of the installation reduced) by adding a flag to `language-c-quote` (a dependency of RAW-Feldspar):
 
-    cabal install --constraint="language-c-quote -full-haskell-antiquotes" raw-feldspar
+    cabal new-install --constraint="language-c-quote -full-haskell-antiquotes" raw-feldspar
 
-However, this flag should normally only be used when installing in a sandbox that has no other packages depending `language-c-quote`.
+However, this flag is less relevant now with Cabal's Nix-style local builds.
 
 ## Getting started
 
@@ -112,7 +112,7 @@
 
 Note how the whole `sumSq` computation has been fused into a single loop without any array allocation.
 
-## External libraries
+## External libraries and uses of RAW-Feldspar
 
 ### Zeldspar
 
@@ -129,6 +129,10 @@
 [feldspar-synch](https://github.com/emilaxelsson/feldspar-synch) is a library that extends Feldspar with Yampa-style synchronous streams.
 
 It contains a simple polyphonic synthesizer as a demonstration. The synthesizer may serve as a simple example of a complete (toy) application written in RAW-Feldspar. It also demonstrates how to make bindings to an external C library (the ALSA sound library).
+
+### feldspar-mpeg1-decoder
+
+[feldspar-mpeg1-decoder](https://github.com/mightynerd/feldspar-mpeg1-decoder) is a partially complete MPEG-1 video decoder written in RAW-Feldspar. See also the associated [masters thesis](https://odr.chalmers.se/bitstream/20.500.12380/301392/1/CSE%2020-66%20Heurlin%20Zwierzchowski.pdf).
 
 ## Why RAW-Feldspar?
 
diff --git a/raw-feldspar.cabal b/raw-feldspar.cabal
--- a/raw-feldspar.cabal
+++ b/raw-feldspar.cabal
@@ -1,5 +1,5 @@
 name:                raw-feldspar
-version:             0.3
+version:             0.3.1
 synopsis:            Resource-Aware Feldspar
 description:         An implementation of the Feldspar EDSL with focus on
                      resource-awareness.
@@ -92,20 +92,20 @@
     ViewPatterns
 
   build-depends:
-    array,
+    array < 0.6,
     base < 5,
-    constraints,
-    containers,
-    data-default-class,
-    data-hash,
+    constraints < 0.12,
+    containers < 0.7,
+    data-default-class < 0.2,
+    data-hash < 0.3,
     imperative-edsl >= 0.8 && < 0.9,
-    language-c-quote,
-    mtl,
+    language-c-quote < 0.13,
+    mtl < 2.3,
     operational-alacarte,
     prelude-edsl >= 0.4,
     syntactic >= 3.8,
       -- That version fixes overlap bugs
-    template-haskell
+    template-haskell < 2.17
 
   if impl(ghc == 8.0.*)
     build-depends:
@@ -149,7 +149,8 @@
     mtl,
     raw-feldspar
 
-  ghc-options: -Wno-simplifiable-class-constraints
+  if impl(ghc >= 8.0)
+    ghc-options: -Wno-simplifiable-class-constraints
 
 test-suite Semantics
   type: exitcode-stdio-1.0
@@ -172,7 +173,8 @@
     tasty-quickcheck,
     tasty-th
 
-  ghc-options: -Wno-simplifiable-class-constraints
+  if impl(ghc >= 8.0)
+    ghc-options: -Wno-simplifiable-class-constraints
 
 test-suite Examples
   type: exitcode-stdio-1.0
@@ -204,5 +206,6 @@
     tasty-hunit,
     tasty-quickcheck
 
-  ghc-options: -Wno-simplifiable-class-constraints
+  if impl(ghc >= 8.0)
+    ghc-options: -Wno-simplifiable-class-constraints
 
diff --git a/src/Data/Inhabited/TH.hs b/src/Data/Inhabited/TH.hs
--- a/src/Data/Inhabited/TH.hs
+++ b/src/Data/Inhabited/TH.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 module Data.Inhabited.TH where
 
 
@@ -8,6 +10,13 @@
 
 
 
+mkTupE :: [Exp] -> Exp
+#if __GLASGOW_HASKELL__ >= 810
+mkTupE = TupE . map Just
+#else
+mkTupE = TupE
+#endif
+
 inhabitedTupleInstances :: Int -> DecsQ
 inhabitedTupleInstances n = return
     [ instD
@@ -20,7 +29,7 @@
             (mkName "example")
             [ Clause
                 []
-                (NormalB $ TupE $ map VarE $ replicate w (mkName "example"))
+                (NormalB $ mkTupE $ map VarE $ replicate w (mkName "example"))
                 []
             ]
         ]
