diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # ats-pkg
 
+## 3.2.4.4
+
+  * Fix bug where `gc` version could not be constrained
+  * Slightly improved behavior around C package versioning (allow package
+    reinstalls)
+
 ## 3.2.4.2
 
   * Update `.dhall` files
diff --git a/ats-pkg.cabal b/ats-pkg.cabal
--- a/ats-pkg.cabal
+++ b/ats-pkg.cabal
@@ -1,12 +1,12 @@
 cabal-version: 2.0
 name: ats-pkg
-version: 3.2.4.2
+version: 3.2.4.4
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
 maintainer: vamchale@gmail.com
 author: Vanessa McHale
-tested-with: ghc ==8.4.3 ghc ==8.2.2
+tested-with: ghc ==8.4.4 ghc ==8.2.2 ghc ==8.6.1
 bug-reports: https://github.com/vmchale/atspkg/issues
 synopsis: A build tool for ATS
 description:
diff --git a/src/Language/ATS/Package/Build.hs b/src/Language/ATS/Package/Build.hs
--- a/src/Language/ATS/Package/Build.hs
+++ b/src/Language/ATS/Package/Build.hs
@@ -301,7 +301,7 @@
 
     unless (rs == ["clean"]) $ do
 
-        let cdps = if f bs || f ts then ("gc", noConstr) : cds else cds where f = any gcBin
+        let cdps = if (f bs || f ts) && ("gc" `notElem` (fst <$> cds)) then ("gc", noConstr) : cds else cds where f = any gcBin
 
         mkUserConfig
 
diff --git a/src/Language/ATS/Package/Dependency.hs b/src/Language/ATS/Package/Dependency.hs
--- a/src/Language/ATS/Package/Dependency.hs
+++ b/src/Language/ATS/Package/Dependency.hs
@@ -89,8 +89,8 @@
       -> CCompiler -- ^ C compiler to use
       -> ATSDependency -- ^ ATSDependency itself
       -> IO ()
-setup v' cc' (ATSDependency lib' dirName' _ _ _ _ _ _ _) = do
-    lib'' <- (</> unpack lib') <$> cpkgHome cc'
+setup v' cc' (ATSDependency lib' dirName' _ _ v _ _ _ _) = do
+    lib'' <- (<> "-" <> show v) .  (</> unpack lib') <$> cpkgHome cc'
     b <- doesFileExist lib''
     unless b $ do
         clibSetup v' cc' (unpack lib') (unpack dirName')
