diff --git a/.travis.yml b/.travis.yml
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,6 @@
 language: c
 sudo: false
+dist: trusty
 
 cache:
   directories:
@@ -12,15 +13,24 @@
 
 matrix:
   include:
-    - env: CABALVER=1.16 GHCVER=7.6.3
-      compiler: ": #GHC 7.6.3"
-      addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
-    - env: CABALVER=1.18 GHCVER=7.8.3 COVERAGE=1
-      compiler: ": #GHC 7.8.3"
-      addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
+    - env: CABALVER=1.18 GHCVER=7.8.4 COVERAGE=1
+      compiler: ": #GHC 7.8.4"
+      addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
     - env: CABALVER=1.22 GHCVER=7.10.3
       compiler: ": #GHC 7.10.3"
       addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
+    - env: CABALVER=1.24 GHCVER=8.0.2
+      compiler: ": #GHC 8.0.2"
+      addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
+    - env: CABALVER=2.0 GHCVER=8.2.2
+      compiler: ": #GHC 8.2.2"
+      addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}
+    - env: CABALVER=2.0 GHCVER=8.4.4
+      compiler: ": #GHC 8.4.4"
+      addons: {apt: {packages: [cabal-install-2.0,ghc-8.4.4,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}
+    - env: CABALVER=2.0 GHCVER=8.6.5
+      compiler: ": #GHC 8.6.5"
+      addons: {apt: {packages: [cabal-install-2.0,ghc-8.6.5,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}
 
 before_install:
  - unset CC
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
 sign
 ====
 
-[![Build Status](https://secure.travis-ci.org/msakai/sign.png?branch=master)](http://travis-ci.org/msakai/sign) [![Build status](https://ci.appveyor.com/api/projects/status/txxfj27tg5ee6ma2/branch/master?svg=true)](https://ci.appveyor.com/project/msakai/sign/branch/master) [![Hackage](https://budueba.com/hackage/sign)](https://hackage.haskell.org/package/sign) [![Coverage Status](https://coveralls.io/repos/msakai/sign/badge.svg)](https://coveralls.io/r/msakai/sign)
+[![Build Status](https://secure.travis-ci.org/msakai/sign.png?branch=master)](http://travis-ci.org/msakai/sign) [![Build status](https://ci.appveyor.com/api/projects/status/txxfj27tg5ee6ma2/branch/master?svg=true)](https://ci.appveyor.com/project/msakai/sign/branch/master) [![Hackage](https://img.shields.io/hackage/v/sign.svg)](https://hackage.haskell.org/package/sign) [![Coverage Status](https://coveralls.io/repos/msakai/sign/badge.svg)](https://coveralls.io/r/msakai/sign)
+[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
 
 Arithmetic over signs (i.e. {-,0,+}) and sets of signs
diff --git a/appveyor.yml b/appveyor.yml
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,21 +1,24 @@
+cache:
+- "c:\\sr" # stack root, short paths == less problems
+
+# to disable automatic builds
+#build: off
+
+environment:
+  global:
+    STACK_ROOT: "c:\\sr"
+
 install:
-- ps: |
-    choco install haskellplatform -version 2014.2.0.0 -y
-    # Haskell Platfrom package doesn't update PATH for the current shell instance
-    $env:Path += ";${env:ProgramFiles}\Haskell Platform\2014.2.0.0\bin"
-    $env:Path += ";${env:ProgramFiles}\Haskell Platform\2014.2.0.0\lib\extralibs\bin"
-    $env:Path += ";${env:ProgramFiles}\Haskell Platform\2014.2.0.0\mingw\bin"
-    cabal sandbox init
-    $env:Path += ";.\.cabal-sandbox\bin"
-    cabal update
-- cabal install --only-dependencies --enable-tests --enable-benchmarks
+#- curl -ostack.zip -L --insecure http://www.stackage.org/stack/windows-x86_64
+- curl -ostack.zip -L --insecure http://www.stackage.org/stack/windows-i386
+- 7z x stack.zip stack.exe
+- stack setup > nul
 
 build_script:
-- cabal configure --enable-tests --enable-benchmarks -v2
-- cabal build
+- git submodule init
+- git submodule update
 
 test_script:
-- cabal test
-- cabal check
-- cabal sdist
-
+# The ugly echo "" hack is to avoid complaints about 0 being an invalid file
+# descriptor
+- echo "" | stack --no-terminal test
diff --git a/sign.cabal b/sign.cabal
--- a/sign.cabal
+++ b/sign.cabal
@@ -1,5 +1,5 @@
 Name:		sign
-Version:	0.4.3
+Version:	0.4.4
 License:	BSD3
 License-File:	LICENSE
 Author:		Masahiro Sakai (masahiro.sakai@gmail.com)
@@ -18,9 +18,12 @@
    .travis.yml
 Build-Type: Simple
 Tested-With:
-   GHC ==7.6.3
-   GHC ==7.8.3
+   GHC ==7.8.4
    GHC ==7.10.3
+   GHC ==8.0.2
+   GHC ==8.2.2
+   GHC ==8.4.4
+   GHC ==8.6.5
 
 source-repository head
   type:     git
@@ -39,7 +42,7 @@
      hashable >=1.1.2.5 && <1.3.0.0
   if flag(lattices14)
      Build-Depends:
-        lattices >=1.4,
+        lattices >=1.4 && <3,
         universe-base
   else
      Build-Depends:
@@ -63,8 +66,8 @@
      lattices,
      sign,
      tasty >=0.10.1,
-     tasty-hunit ==0.9.*,
-     tasty-quickcheck ==0.8.*,
+     tasty-hunit >=0.9 && <0.11,
+     tasty-quickcheck >=0.8 && <0.11,
      tasty-th,
      -- NOTE: test-framework-quickcheck2 >=0.2.12.3 is necessary for QuickCheck >=2.5
      -- test-framework-quickcheck2 >=0.2.12.3 && <0.4.0,
diff --git a/src/Data/Sign.hs b/src/Data/Sign.hs
--- a/src/Data/Sign.hs
+++ b/src/Data/Sign.hs
@@ -39,7 +39,9 @@
 import qualified Data.Universe.Class as U -- from universe-base package
 import qualified Data.Universe.Helpers as U -- from universe-base package
 #endif
+#if !MIN_VERSION_lattices(2,0,0)
 import Algebra.Enumerable (Enumerable (..), universeBounded) -- from lattices package
+#endif
 import qualified Algebra.Lattice as L -- from lattices package
 import Control.DeepSeq
 import Data.Hashable
@@ -59,7 +61,7 @@
 
 instance Hashable Sign where hashWithSalt = hashUsing fromEnum
 
-#if MIN_VERSION_lattices(1,4,0)                             
+#if MIN_VERSION_lattices(1,4,0)
 
 instance U.Universe Sign where
   universe = U.universeDef
@@ -68,8 +70,12 @@
   
 #endif
 
+#if !MIN_VERSION_lattices(2,0,0)
+
 instance Enumerable Sign where
   universe = universeBounded
+
+#endif
 
 -- | Unary negation.
 negate :: Sign -> Sign
