diff --git a/.travis.yml b/.travis.yml
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,1 +1,55 @@
-language: haskell
+# NB: don't set `language: haskell` here
+
+# The following enables several GHC versions to be tested; often it's enough to test only against the last release in a major GHC version. Feel free to omit lines listings versions you don't need/want testing for.
+env:
+# - GHCVER=6.12.3
+# - GHCVER=7.0.1
+# - GHCVER=7.0.2
+# - GHCVER=7.0.3
+# - GHCVER=7.0.4
+# - GHCVER=7.2.1
+# - GHCVER=7.2.2
+# - GHCVER=7.4.1
+# - GHCVER=7.4.2
+# - GHCVER=7.6.1
+# - GHCVER=7.6.2
+ - GHCVER=7.6.3
+# - GHCVER=7.8.1 # see note about Alex/Happy
+ - GHCVER=7.8.2 # see note about Alex/Happy
+# - GHCVER=head  # see section about GHC HEAD snapshots
+
+# Note: the distinction between `before_install` and `install` is not important.
+before_install:
+ - travis_retry sudo add-apt-repository -y ppa:hvr/ghc
+ - travis_retry sudo apt-get update
+ - travis_retry sudo apt-get install cabal-install-1.18 ghc-$GHCVER # see note about happy/alex
+ - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/1.18/bin:$PATH
+ - |
+   if [ $GHCVER = "head" ] || [ ${GHCVER%.*} = "7.8" ]; then
+     travis_retry sudo apt-get install happy-1.19.3 alex-3.1.3
+     export PATH=/opt/alex/3.1.3/bin:/opt/happy/1.19.3/bin:$PATH
+   else
+     travis_retry sudo apt-get install happy alex
+   fi
+
+install:
+ - cabal update
+ - cabal install --only-dependencies --enable-tests -v2  # -v2 provides useful information for debugging
+
+# Here starts the actual work to be performed for the package under test; any command which exits with a non-zero exit code causes the build to fail.
+script:
+ - cabal configure --enable-tests -v2  # -v2 provides useful information for debugging
+ - cabal build   # this builds all libraries and executables (including tests/benchmarks)
+ - cabal test
+ - cabal check
+ - cabal sdist   # tests that a source-distribution can be generated
+
+# The following scriptlet checks that the resulting source distribution can be built & installed
+ - export SRC_TGZ=$(cabal-1.18 info . | awk '{print $2 ".tar.gz";exit}') ;
+   cd dist/;
+   if [ -f "$SRC_TGZ" ]; then
+      cabal install "$SRC_TGZ";
+   else
+      echo "expected '$SRC_TGZ' not found";
+      exit 1;
+   fi
diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.markdown
@@ -0,0 +1,17 @@
+0.8.0
+-----
+* remove dependency on `algebra` package, since it is outdated and not compatible with recent version of other packages
+
+0.7.0
+-----
+* use extended GCD to compute reciprocals
+* conform with the addition of SomeNat type to type-level-numbers-0.1.1.0.
+
+0.6.0
+-----
+* add Hashable instance
+* add allValues to FiniteField class
+  .
+0.5.0
+-----
+* introduce FiniteField class
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,2 +1,4 @@
 finite-field
 ============
+
+[![Build Status](https://secure.travis-ci.org/msakai/finite-field.png?branch=master)](http://travis-ci.org/msakai/finite-field)
diff --git a/finite-field.cabal b/finite-field.cabal
--- a/finite-field.cabal
+++ b/finite-field.cabal
@@ -1,5 +1,5 @@
 Name:		finite-field
-Version:	0.7.0
+Version:	0.8.0
 License:	BSD3
 License-File:	COPYING
 Author:		Masahiro Sakai (masahiro.sakai@gmail.com)
@@ -10,29 +10,11 @@
 Description:
   This is an implementation of finite fields.
   Currently only prime fields are supported.
-  .
-  Changes in 0.7.0
-  .
-  * use extended GCD to compute reciprocals
-  .
-  * conform with the addition of SomeNat type to type-level-numbers-0.1.1.0.
-  .
-  Changes in 0.6.0
-  .
-  * add Hashable instance
-  .
-  Changes in 0.6.0
-  .
-  * add allValues to FiniteField class
-  .
-  Changes in 0.5.0
-  .
-  * introduce FiniteField class
-
 Bug-Reports:	https://github.com/msakai/finite-field/issues
 Extra-Source-Files:
    README.md
    COPYING
+   CHANGELOG.markdown
    .travis.yml
    .gitignore
 Build-Type: Simple
@@ -44,7 +26,7 @@
 Library
   Hs-source-dirs: src
   Build-Depends:
-     base >=4 && <5, template-haskell, deepseq, hashable, type-level-numbers >=0.1.1.0 && <0.2.0.0, algebra >=3.1
+     base >=4 && <5, template-haskell, deepseq, hashable, type-level-numbers >=0.1.1.0 && <0.2.0.0
   Default-Language: Haskell2010
   Other-Extensions:
      DeriveDataTypeable
diff --git a/src/Data/FiniteField.hs b/src/Data/FiniteField.hs
--- a/src/Data/FiniteField.hs
+++ b/src/Data/FiniteField.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 -----------------------------------------------------------------------------
 -- |
 -- module      :  Data.FiniteField
diff --git a/src/Data/FiniteField/Base.hs b/src/Data/FiniteField/Base.hs
--- a/src/Data/FiniteField/Base.hs
+++ b/src/Data/FiniteField/Base.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 -----------------------------------------------------------------------------
 -- |
 -- module      :  Data.FiniteField.Base
@@ -12,9 +13,6 @@
 module Data.FiniteField.Base
   ( FiniteField (..)
   ) where
-
-import Data.Ratio
-import qualified Numeric.Algebra as Alg
 
 -- | Type class for finite fields
 class Fractional k => FiniteField k where
diff --git a/src/Data/FiniteField/PrimeField.hs b/src/Data/FiniteField/PrimeField.hs
--- a/src/Data/FiniteField/PrimeField.hs
+++ b/src/Data/FiniteField/PrimeField.hs
@@ -31,7 +31,6 @@
 import Data.Ratio (denominator, numerator)
 import Data.Typeable
 import qualified Language.Haskell.TH as TH
-import qualified Numeric.Algebra as Alg
 import qualified TypeLevel.Number.Nat as TL
 import Data.FiniteField.Base
 
@@ -114,53 +113,6 @@
     f (g,u,v)
       | g < 0 = (-g, -u, -v)
       | otherwise = (g,u,v)
-
--- ---------------------------------------------------------------------------
-
-instance TL.Nat p => Alg.Multiplicative (PrimeField p) where
-  (*) = (*)
-
-instance TL.Nat p => Alg.Commutative (PrimeField p)
-
-instance TL.Nat p => Alg.Unital (PrimeField p) where
-  one = 1
-
-instance TL.Nat p => Alg.Division (PrimeField p) where
-  recip = recip
-
-instance TL.Nat p => Alg.Additive (PrimeField p) where
-  (+) = (+)
-
-instance TL.Nat p => Alg.Abelian (PrimeField p)
-
-instance TL.Nat p => Alg.Semiring (PrimeField p)
-
-instance TL.Nat p => Alg.LeftModule Alg.Natural (PrimeField p) where
-  n .* a = fromIntegral n * a
-
-instance TL.Nat p => Alg.RightModule Alg.Natural (PrimeField p) where
-  a *. n = a * fromIntegral n
-
-instance TL.Nat p => Alg.Monoidal (PrimeField p) where
-  zero = 0
-
-instance TL.Nat p => Alg.LeftModule Integer (PrimeField p) where
-  n .* a = fromIntegral n * a
-
-instance TL.Nat p => Alg.RightModule Integer (PrimeField p) where
-  a *. n = a * fromIntegral n
-
-instance TL.Nat p => Alg.Group (PrimeField p) where
-  negate = negate
-
-instance TL.Nat p => Alg.Rig (PrimeField p)
-
-instance TL.Nat p => Alg.Ring (PrimeField p)
-
-instance TL.Nat p => Alg.Characteristic (PrimeField p) where
-  char _ = TL.toInt (undefined :: p)
-
-instance TL.Nat p => Alg.Field (PrimeField p)
 
 -- ---------------------------------------------------------------------------
 
diff --git a/test/TestPrimeField.hs b/test/TestPrimeField.hs
--- a/test/TestPrimeField.hs
+++ b/test/TestPrimeField.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE TemplateHaskell, ScopedTypeVariables #-}
+{-# OPTIONS_GHC -fcontext-stack=32 #-}
 
 import Test.HUnit hiding (Test)
 import Test.QuickCheck
