diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2016 Simon Hengel <sol@typeful.net>
+Copyright (c) 2016-2021 Simon Hengel <sol@typeful.net>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/call-stack.cabal b/call-stack.cabal
--- a/call-stack.cabal
+++ b/call-stack.cabal
@@ -1,13 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.0.
+-- This file has been generated from package.yaml by hpack version 0.34.3.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: ead73de1f27ca13dbc12434ae8a06a86ce7c6fc59801f6807140632fc1e44df8
 
 name:           call-stack
-version:        0.2.0
+version:        0.3.0
 synopsis:       Use GHC call-stacks in a backward compatible way
 category:       Data
 homepage:       https://github.com/sol/call-stack#readme
@@ -26,7 +24,7 @@
       src
   ghc-options: -Wall
   build-depends:
-      base >=4.5.0.0 && <5
+      base ==4.*
   exposed-modules:
       Data.CallStack
   other-modules:
@@ -41,7 +39,7 @@
       test
   ghc-options: -Wall
   build-depends:
-      base >=4.5.0.0 && <5
+      base ==4.*
     , call-stack
     , nanospec
   other-modules:
diff --git a/src/Data/CallStack.hs b/src/Data/CallStack.hs
--- a/src/Data/CallStack.hs
+++ b/src/Data/CallStack.hs
@@ -1,11 +1,19 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE ConstraintKinds #-}
 {-# LANGUAGE KindSignatures #-}
 {-# LANGUAGE ImplicitParams #-}
 
+#if __GLASGOW_HASKELL__ >= 704
+{-# LANGUAGE ConstraintKinds #-}
+#define HCS HasCallStack =>
+#else
+#define HCS
+#endif
+
 module Data.CallStack (
-  HasCallStack
-, CallStack
+#if __GLASGOW_HASKELL__ >= 704
+  HasCallStack,
+#endif
+  CallStack
 , SrcLoc(..)
 , callStack
 , callSite
@@ -22,14 +30,14 @@
 import           GHC.Stack (HasCallStack)
 #elif MIN_VERSION_base(4,8,1)
 type HasCallStack = (?callStack :: GHC.CallStack)
-#else
+#elif __GLASGOW_HASKELL__ >= 704
 import GHC.Exts (Constraint)
 type HasCallStack = (() :: Constraint)
 #endif
 
 type CallStack = [(String, SrcLoc)]
 
-callStack :: HasCallStack => CallStack
+callStack :: HCS CallStack
 #if MIN_VERSION_base(4,9,0)
 callStack = drop 1 $ GHC.getCallStack GHC.callStack
 #elif MIN_VERSION_base(4,8,1)
@@ -38,5 +46,5 @@
 callStack = []
 #endif
 
-callSite :: HasCallStack => Maybe (String, SrcLoc)
+callSite :: HCS Maybe (String, SrcLoc)
 callSite = listToMaybe (reverse callStack)
diff --git a/test/Data/CallStackSpec.hs b/test/Data/CallStackSpec.hs
--- a/test/Data/CallStackSpec.hs
+++ b/test/Data/CallStackSpec.hs
@@ -16,9 +16,9 @@
               srcLocPackage = "main"
             , srcLocModule = "Example"
             , srcLocFile = "test/Example.hs"
-            , srcLocStartLine = 11
+            , srcLocStartLine = 17
             , srcLocStartCol = 7
-            , srcLocEndLine = 11
+            , srcLocEndLine = 17
             , srcLocEndCol = 10
             }
           )
@@ -27,9 +27,9 @@
               srcLocPackage = "main"
             , srcLocModule = "Example"
             , srcLocFile = "test/Example.hs"
-            , srcLocStartLine = 8
+            , srcLocStartLine = 14
             , srcLocStartCol = 8
-            , srcLocEndLine = 8
+            , srcLocEndLine = 14
             , srcLocEndCol = 11
             }
           )
diff --git a/test/Example.hs b/test/Example.hs
--- a/test/Example.hs
+++ b/test/Example.hs
@@ -1,5 +1,11 @@
-{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE CPP, FlexibleContexts #-}
+
+#if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE ConstraintKinds #-}
+#define HCS HasCallStack =>
+#else
+#define HCS
+#endif
 module Example where
 
 import           Data.CallStack
@@ -7,8 +13,8 @@
 test :: CallStack
 test = foo
 
-foo :: HasCallStack => CallStack
+foo :: HCS CallStack
 foo = bar
 
-bar :: HasCallStack => CallStack
+bar :: HCS CallStack
 bar = callStack
