diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # madlang
 
+## 4.0.2.15
+
+  * Fix bug related to unpacking zip archives
+
 ## 4.0.2.14
 
   * Fix minor Windows bugs related to paths
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -2,7 +2,6 @@
 module Main ( main ) where
 
 import           Data.Maybe
-import           Data.Semigroup
 import qualified Data.Text                    as T
 import qualified Data.Text.Lazy               as TL
 import qualified Data.Text.Lazy.IO            as TLIO
diff --git a/app/Text/Madlibs/Packaging/Fetch.hs b/app/Text/Madlibs/Packaging/Fetch.hs
--- a/app/Text/Madlibs/Packaging/Fetch.hs
+++ b/app/Text/Madlibs/Packaging/Fetch.hs
@@ -13,7 +13,7 @@
 import           Data.Foldable           (traverse_)
 import           Network.HTTP.Client     hiding (decompress)
 import           Network.HTTP.Client.TLS (tlsManagerSettings)
-import           System.Directory        (getAppUserDataDirectory, removeFile, renameDirectory)
+import           System.Directory        (getAppUserDataDirectory, removeFile, renameDirectory, withCurrentDirectory)
 import           System.Environment      (getEnv)
 import           System.FilePath         (pathSeparator, (</>))
 import           System.Info             (os)
@@ -51,7 +51,8 @@
     home <- getEnv "HOME"
     let packageDir = if os /= "mingw32" then home ++ "/.vim" else home ++ "\\vimfiles"
     let options = OptDestination packageDir
-    extractFilesFromArchive [options] (toArchive response)
+    withCurrentDirectory packageDir $
+        extractFilesFromArchive [options] (toArchive response)
 
     putStrLn "cleaning junk..."
 
diff --git a/cabal.project b/cabal.project
new file mode 100644
--- /dev/null
+++ b/cabal.project
@@ -0,0 +1,4 @@
+packages: ./
+
+constraints: madlang +development
+max-backjumps: 120000
diff --git a/cabal.project.local b/cabal.project.local
deleted file mode 100644
--- a/cabal.project.local
+++ /dev/null
@@ -1,2 +0,0 @@
-constraints: madlang +development
-max-backjumps: 120000
diff --git a/madlang.cabal b/madlang.cabal
--- a/madlang.cabal
+++ b/madlang.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: madlang
-version: 4.0.2.14
+version: 4.0.2.15
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2016-2018 Vanessa McHale
@@ -19,7 +19,7 @@
     test/templates/*.mad
     test/templates/err/*.mad
     demo/*.mad
-    cabal.project.local
+    cabal.project
     man/madlang.1
 extra-doc-files: README.md
                  CHANGELOG.md
@@ -65,7 +65,7 @@
                       TemplateHaskell
     ghc-options: -Wall
     build-depends:
-        base >=4.9 && <5,
+        base >=4.11 && <5,
         megaparsec >=7.0,
         text -any,
         template-haskell -any,
@@ -99,7 +99,7 @@
     default-language: Haskell2010
     ghc-options: -Wall
     build-depends:
-        base >=4.9,
+        base >=4.11,
         madlang -any,
         optparse-applicative -any,
         text -any,
diff --git a/src/Text/Madlibs/Ana/Parse.hs b/src/Text/Madlibs/Ana/Parse.hs
--- a/src/Text/Madlibs/Ana/Parse.hs
+++ b/src/Text/Madlibs/Ana/Parse.hs
@@ -17,7 +17,6 @@
 import           Control.Monad.State
 import qualified Data.Map                    as M
 import           Data.Maybe
-import           Data.Semigroup
 import qualified Data.Text                   as T
 import           Data.Void
 import           Text.Madlibs.Ana.ParseUtils
diff --git a/src/Text/Madlibs/Ana/ParseUtils.hs b/src/Text/Madlibs/Ana/ParseUtils.hs
--- a/src/Text/Madlibs/Ana/ParseUtils.hs
+++ b/src/Text/Madlibs/Ana/ParseUtils.hs
@@ -19,7 +19,6 @@
 import           Data.List
 import qualified Data.Map                    as M
 import           Data.Maybe                  (mapMaybe)
-import           Data.Semigroup
 import qualified Data.Set                    as S
 import qualified Data.Text                   as T
 import           Data.Text.Titlecase
diff --git a/src/Text/Madlibs/Ana/Resolve.hs b/src/Text/Madlibs/Ana/Resolve.hs
--- a/src/Text/Madlibs/Ana/Resolve.hs
+++ b/src/Text/Madlibs/Ana/Resolve.hs
@@ -17,7 +17,6 @@
 import           Control.Monad.IO.Class      (MonadIO, liftIO)
 import           Control.Monad.Random.Class
 import           Data.Foldable               (fold)
-import           Data.Semigroup
 import qualified Data.Text                   as T
 import           Data.Void
 import           System.Directory
diff --git a/src/Text/Madlibs/Generate/TH.hs b/src/Text/Madlibs/Generate/TH.hs
--- a/src/Text/Madlibs/Generate/TH.hs
+++ b/src/Text/Madlibs/Generate/TH.hs
@@ -8,16 +8,14 @@
 
 import           Control.Arrow               (first)
 import           Data.FileEmbed              (embedStringFile)
-import           Data.Semigroup
 import qualified Data.Text                   as T
 import qualified Data.Text.IO                as TIO
 import           Data.Void
 import           Language.Haskell.TH         hiding (Dec)
 import           Language.Haskell.TH.Quote
 import           Language.Haskell.TH.Syntax  (lift)
-import           System.Directory            (doesFileExist,
-                                              getAppUserDataDirectory)
-import System.FilePath (pathSeparator, dropExtension)
+import           System.Directory            (doesFileExist, getAppUserDataDirectory)
+import           System.FilePath             (dropExtension, pathSeparator)
 import           Text.Madlibs.Ana.Parse
 import           Text.Madlibs.Internal.Types (Key, RandTok)
 import           Text.Madlibs.Internal.Utils
diff --git a/src/Text/Madlibs/Internal/Types.hs b/src/Text/Madlibs/Internal/Types.hs
--- a/src/Text/Madlibs/Internal/Types.hs
+++ b/src/Text/Madlibs/Internal/Types.hs
@@ -14,7 +14,6 @@
 import           Control.Recursion
 import           Data.Binary                (Binary)
 import           Data.Function
-import           Data.Semigroup
 import qualified Data.Text                  as T
 import           GHC.Generics               (Generic)
 import           Instances.TH.Lift          ()
@@ -59,7 +58,6 @@
 -- > (List [(0.5,"Hello you"), (0.5, "Hello me")])
 instance Monoid RandTok where
     mempty = Value ""
-    mappend = (<>)
 
 -- TODO make this a map instead of keys for faster parse.
 -- | State monad providing context, i.e. function we've already called before
diff --git a/src/Text/Madlibs/Internal/Utils.hs b/src/Text/Madlibs/Internal/Utils.hs
--- a/src/Text/Madlibs/Internal/Utils.hs
+++ b/src/Text/Madlibs/Internal/Utils.hs
@@ -6,7 +6,6 @@
 
 import           Control.Arrow               (first)
 import           Control.Exception           (IOException, catch, throw)
-import           Control.Monad
 import qualified Data.Text                   as T
 import           Data.Void
 import           System.FilePath             (pathSeparator)
