diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,5 @@
+# Changelog for grid
+
+7.8.10 Revamped to work with Stack v1.7.1.
+
+## Unreleased changes
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright Amy de Buitléir (c) 2016
+Copyright Amy de Buitléir (c) 2016-2018
 
 All rights reserved.
 
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,21 @@
+[![Hackage](https://img.shields.io/hackage/v/grid.svg)](http://hackage.haskell.org/package/grid)
+[![Hackage-Deps](https://img.shields.io/hackage-deps/v/grid.svg)](http://hackage.haskell.org/package/grid)
+
+# Grid
+
+**Grid** is a Haskell library for working with regular grids/graphs/lattices.
+
+Please read the introductory userguide with pictures [here][wiki].
+
+More detailed Haddock documentation with sample code can be found at [Hackage][hackage].
+
+## Related packages
+
+- [htiled][htiled]: Import maps from the `.tmx` map format generated by [Tiled][Tiled].
+- [IcoGrid][IcoGrid]: Defines functions for dealing with a type of hexagon grid wrapped around a sphere.
+
+[wiki]:https://github.com/mhwombat/grid/wiki
+[hackage]:http://hackage.haskell.org/packages/archive/grid/latest/doc/html/Math-Geometry-Grid.html
+[htiled]:http://hackage.haskell.org/package/htiled
+[Tiled]:http://www.mapeditor.org
+[IcoGrid]:http://hackage.haskell.org/package/IcoGrid
diff --git a/grid.cabal b/grid.cabal
--- a/grid.cabal
+++ b/grid.cabal
@@ -1,71 +1,76 @@
-name: grid
-version: 7.8.9
-cabal-version: >=1.10
-build-type: Simple
-license: BSD3
-license-file: LICENSE
-copyright: (c) Amy de Buitléir 2010-2016
-maintainer: amy@nualeargais.ie
-homepage: https://github.com/mhwombat/grid#readme
-bug-reports: https://github.com/mhwombat/grid/issues
-synopsis: Tools for working with regular grids (graphs, lattices).
-description:
-    Provides tools for working with regular arrangements
-    of tiles, such as might be used in a board game or some
-    other type of grid map. Currently supports triangular,
-    square, and hexagonal tiles, with various 2D and
-    toroidal layouts.
-    The userguide is available at
-    <https://github.com/mhwombat/grid/wiki>.
-category: Math
-author: Amy de Buitléir
+-- This file has been generated from package.yaml by hpack version 0.28.2.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: add150642d3d975fd2ae7f93f27f6bb6a586d77198f61f9e7d145568cbab1255
 
+name:           grid
+version:        7.8.10
+synopsis:       Tools for working with regular grids (graphs, lattices).
+description:    Please see the README on GitHub at <https://github.com/mhwombat/grid#readme>
+category:       Math
+homepage:       https://github.com/mhwombat/grid#readme
+bug-reports:    https://github.com/mhwombat/grid/issues
+author:         Amy de Buitléir
+maintainer:     amy@nualeargais.ie
+copyright:      2010-2018 Amy de Buitléir
+license:        BSD3
+license-file:   LICENSE
+build-type:     Simple
+cabal-version:  >= 1.10
+extra-source-files:
+    ChangeLog.md
+    README.md
+
 source-repository head
-    type: git
-    location: https://github.com/mhwombat/grid
+  type: git
+  location: https://github.com/mhwombat/grid
 
 library
-    exposed-modules:
-        Math.Geometry.Grid
-        Math.Geometry.Grid.Triangular
-        Math.Geometry.Grid.Square
-        Math.Geometry.Grid.Hexagonal
-        Math.Geometry.Grid.Hexagonal2
-        Math.Geometry.Grid.Octagonal
-        Math.Geometry.GridInternal
-        Math.Geometry.Grid.TriangularInternal
-        Math.Geometry.Grid.SquareInternal
-        Math.Geometry.Grid.HexagonalInternal
-        Math.Geometry.Grid.HexagonalInternal2
-        Math.Geometry.Grid.OctagonalInternal
-        Math.Geometry.GridMap
-        Math.Geometry.GridMap.Lazy
-    build-depends:
-        base >=4.7 && <5,
-        cereal >=0.4 && <0.6,
-        containers ==0.5.*
-    default-language: Haskell2010
-    hs-source-dirs: src
-    ghc-options: -Wall
+  exposed-modules:
+      Math.Geometry.Grid
+      Math.Geometry.Grid.Hexagonal
+      Math.Geometry.Grid.Hexagonal2
+      Math.Geometry.Grid.HexagonalInternal
+      Math.Geometry.Grid.HexagonalInternal2
+      Math.Geometry.Grid.Octagonal
+      Math.Geometry.Grid.OctagonalInternal
+      Math.Geometry.Grid.Square
+      Math.Geometry.Grid.SquareInternal
+      Math.Geometry.Grid.Triangular
+      Math.Geometry.Grid.TriangularInternal
+      Math.Geometry.GridInternal
+      Math.Geometry.GridMap
+      Math.Geometry.GridMap.Lazy
+  other-modules:
+      Paths_grid
+  hs-source-dirs:
+      src
+  ghc-options: -Wall
+  build-depends:
+      base >=4.7 && <5
+    , containers
+  default-language: Haskell2010
 
-test-suite grid-test
-    type: exitcode-stdio-1.0
-    main-is: TestMain.hs
-    build-depends:
-        base >=4.10.0.0 && <4.11,
-        grid,
-        containers >=0.5.10.2 && <0.6,
-        test-framework ==0.8.*,
-        test-framework-quickcheck2 ==0.3.*,
-        QuickCheck >=2.8 && <2.10
-    default-language: Haskell2010
-    hs-source-dirs: test
-    other-modules:
-        Math.Geometry.GridQC
-        Math.Geometry.Grid.Hexagonal2QC
-        Math.Geometry.Grid.HexagonalQC
-        Math.Geometry.Grid.OctagonalQC
-        Math.Geometry.Grid.SquareQC
-        Math.Geometry.Grid.TriangularQC
-        Math.Geometry.GridMap.LazyQC
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+test-suite som-test
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Math.Geometry.Grid.Hexagonal2QC
+      Math.Geometry.Grid.HexagonalQC
+      Math.Geometry.Grid.OctagonalQC
+      Math.Geometry.Grid.SquareQC
+      Math.Geometry.Grid.TriangularQC
+      Math.Geometry.GridMap.LazyQC
+      Math.Geometry.GridQC
+      Paths_grid
+  hs-source-dirs:
+      test
+  ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+  build-depends:
+      QuickCheck
+    , base >=4.7 && <5
+    , grid
+    , test-framework
+    , test-framework-quickcheck2
+  default-language: Haskell2010
diff --git a/src/Math/Geometry/Grid.hs b/src/Math/Geometry/Grid.hs
--- a/src/Math/Geometry/Grid.hs
+++ b/src/Math/Geometry/Grid.hs
@@ -1,7 +1,7 @@
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.Grid
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/Hexagonal.hs b/src/Math/Geometry/Grid/Hexagonal.hs
--- a/src/Math/Geometry/Grid/Hexagonal.hs
+++ b/src/Math/Geometry/Grid/Hexagonal.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.HexGrid
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/Hexagonal2.hs b/src/Math/Geometry/Grid/Hexagonal2.hs
--- a/src/Math/Geometry/Grid/Hexagonal2.hs
+++ b/src/Math/Geometry/Grid/Hexagonal2.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.HexGrid
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/HexagonalInternal.hs b/src/Math/Geometry/Grid/HexagonalInternal.hs
--- a/src/Math/Geometry/Grid/HexagonalInternal.hs
+++ b/src/Math/Geometry/Grid/HexagonalInternal.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.HexGridInternal
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/HexagonalInternal2.hs b/src/Math/Geometry/Grid/HexagonalInternal2.hs
--- a/src/Math/Geometry/Grid/HexagonalInternal2.hs
+++ b/src/Math/Geometry/Grid/HexagonalInternal2.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.HexGridInternal
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/Octagonal.hs b/src/Math/Geometry/Grid/Octagonal.hs
--- a/src/Math/Geometry/Grid/Octagonal.hs
+++ b/src/Math/Geometry/Grid/Octagonal.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.OctGrid
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/OctagonalInternal.hs b/src/Math/Geometry/Grid/OctagonalInternal.hs
--- a/src/Math/Geometry/Grid/OctagonalInternal.hs
+++ b/src/Math/Geometry/Grid/OctagonalInternal.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.OctGridInternal
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/Square.hs b/src/Math/Geometry/Grid/Square.hs
--- a/src/Math/Geometry/Grid/Square.hs
+++ b/src/Math/Geometry/Grid/Square.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.SquareGrid
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/SquareInternal.hs b/src/Math/Geometry/Grid/SquareInternal.hs
--- a/src/Math/Geometry/Grid/SquareInternal.hs
+++ b/src/Math/Geometry/Grid/SquareInternal.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.SquareGridInternal
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/Triangular.hs b/src/Math/Geometry/Grid/Triangular.hs
--- a/src/Math/Geometry/Grid/Triangular.hs
+++ b/src/Math/Geometry/Grid/Triangular.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.TriGrid
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/Grid/TriangularInternal.hs b/src/Math/Geometry/Grid/TriangularInternal.hs
--- a/src/Math/Geometry/Grid/TriangularInternal.hs
+++ b/src/Math/Geometry/Grid/TriangularInternal.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.TriGridInternal
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/GridInternal.hs b/src/Math/Geometry/GridInternal.hs
--- a/src/Math/Geometry/GridInternal.hs
+++ b/src/Math/Geometry/GridInternal.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.GridInternal
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/GridMap.hs b/src/Math/Geometry/GridMap.hs
--- a/src/Math/Geometry/GridMap.hs
+++ b/src/Math/Geometry/GridMap.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.GridMap
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/src/Math/Geometry/GridMap/Lazy.hs b/src/Math/Geometry/GridMap/Lazy.hs
--- a/src/Math/Geometry/GridMap/Lazy.hs
+++ b/src/Math/Geometry/GridMap/Lazy.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.GridMap.Lazy
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/test/Math/Geometry/Grid/Hexagonal2QC.hs b/test/Math/Geometry/Grid/Hexagonal2QC.hs
--- a/test/Math/Geometry/Grid/Hexagonal2QC.hs
+++ b/test/Math/Geometry/Grid/Hexagonal2QC.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.Grid.Hexagonal2QC
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/test/Math/Geometry/Grid/HexagonalQC.hs b/test/Math/Geometry/Grid/HexagonalQC.hs
--- a/test/Math/Geometry/Grid/HexagonalQC.hs
+++ b/test/Math/Geometry/Grid/HexagonalQC.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.Grid.RectangularQC
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/test/Math/Geometry/Grid/OctagonalQC.hs b/test/Math/Geometry/Grid/OctagonalQC.hs
--- a/test/Math/Geometry/Grid/OctagonalQC.hs
+++ b/test/Math/Geometry/Grid/OctagonalQC.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.Grid.OctagonalQC
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/test/Math/Geometry/Grid/SquareQC.hs b/test/Math/Geometry/Grid/SquareQC.hs
--- a/test/Math/Geometry/Grid/SquareQC.hs
+++ b/test/Math/Geometry/Grid/SquareQC.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.Grid.SquareQC
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/test/Math/Geometry/Grid/TriangularQC.hs b/test/Math/Geometry/Grid/TriangularQC.hs
--- a/test/Math/Geometry/Grid/TriangularQC.hs
+++ b/test/Math/Geometry/Grid/TriangularQC.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.Grid.TriangularQC
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/test/Math/Geometry/GridMap/LazyQC.hs b/test/Math/Geometry/GridMap/LazyQC.hs
--- a/test/Math/Geometry/GridMap/LazyQC.hs
+++ b/test/Math/Geometry/GridMap/LazyQC.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.GridMap.LazyQC
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/test/Math/Geometry/GridQC.hs b/test/Math/Geometry/GridQC.hs
--- a/test/Math/Geometry/GridQC.hs
+++ b/test/Math/Geometry/GridQC.hs
@@ -1,7 +1,7 @@
 ------------------------------------------------------------------------
 -- |
 -- Module      :  Math.Geometry.Grid.GridQC
--- Copyright   :  (c) Amy de Buitléir 2012-2016
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
 -- License     :  BSD-style
 -- Maintainer  :  amy@nualeargais.ie
 -- Stability   :  experimental
diff --git a/test/Spec.hs b/test/Spec.hs
new file mode 100644
--- /dev/null
+++ b/test/Spec.hs
@@ -0,0 +1,34 @@
+------------------------------------------------------------------------
+-- |
+-- Module      :  Main
+-- Copyright   :  (c) Amy de Buitléir 2012-2017
+-- License     :  BSD-style
+-- Maintainer  :  amy@nualeargais.ie
+-- Stability   :  experimental
+-- Portability :  portable
+--
+-- QuickCheck tests.
+--
+------------------------------------------------------------------------
+import Math.Geometry.Grid.TriangularQC ( test )
+import Math.Geometry.Grid.SquareQC ( test )
+import Math.Geometry.Grid.HexagonalQC ( test )
+import Math.Geometry.Grid.Hexagonal2QC ( test )
+import Math.Geometry.Grid.OctagonalQC ( test )
+import Math.Geometry.GridMap.LazyQC (test)
+
+import Test.Framework ( defaultMain, Test )
+
+tests :: [Test]
+tests = 
+  [ 
+    Math.Geometry.Grid.TriangularQC.test,
+    Math.Geometry.Grid.SquareQC.test,
+    Math.Geometry.Grid.HexagonalQC.test,
+    Math.Geometry.Grid.Hexagonal2QC.test,
+    Math.Geometry.Grid.OctagonalQC.test,
+    Math.Geometry.GridMap.LazyQC.test
+  ]
+
+main :: IO ()
+main = defaultMain tests
diff --git a/test/TestMain.hs b/test/TestMain.hs
deleted file mode 100644
--- a/test/TestMain.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-------------------------------------------------------------------------
--- |
--- Module      :  Math.Geometry.Grid.Main
--- Copyright   :  (c) Amy de Buitléir 2012-2016
--- License     :  BSD-style
--- Maintainer  :  amy@nualeargais.ie
--- Stability   :  experimental
--- Portability :  portable
---
--- QuickCheck tests.
---
-------------------------------------------------------------------------
-module Main where
-
-import Math.Geometry.Grid.TriangularQC ( test )
-import Math.Geometry.Grid.SquareQC ( test )
-import Math.Geometry.Grid.HexagonalQC ( test )
-import Math.Geometry.Grid.Hexagonal2QC ( test )
-import Math.Geometry.Grid.OctagonalQC ( test )
-import Math.Geometry.GridMap.LazyQC (test)
-
-import Test.Framework ( defaultMain, Test )
-
-tests :: [Test]
-tests = 
-  [ 
-    Math.Geometry.Grid.TriangularQC.test,
-    Math.Geometry.Grid.SquareQC.test,
-    Math.Geometry.Grid.HexagonalQC.test,
-    Math.Geometry.Grid.Hexagonal2QC.test,
-    Math.Geometry.Grid.OctagonalQC.test,
-    Math.Geometry.GridMap.LazyQC.test
-  ]
-
-main :: IO ()
-main = defaultMain tests
