diff --git a/Data/LinearProgram/GLPK/Internal.hs b/Data/LinearProgram/GLPK/Internal.hs
--- a/Data/LinearProgram/GLPK/Internal.hs
+++ b/Data/LinearProgram/GLPK/Internal.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE RecordWildCards, ScopedTypeVariables, ForeignFunctionInterface #-}
+{-# LANGUAGE RecordWildCards, ScopedTypeVariables, ForeignFunctionInterface, BangPatterns #-}
 module Data.LinearProgram.GLPK.Internal (writeProblem, solveSimplex, mipSolve,
 	getObjVal, getRowPrim, getColPrim, mipObjVal, mipRowVal, mipColVal, getBadRay) where
 {-(writeProblem, addCols,
diff --git a/Data/LinearProgram/Spec.hs b/Data/LinearProgram/Spec.hs
--- a/Data/LinearProgram/Spec.hs
+++ b/Data/LinearProgram/Spec.hs
@@ -9,7 +9,7 @@
 import Data.Char (isSpace)
 import Data.Monoid
 import Data.Functor
-import Data.Map hiding (map)
+import Data.Map hiding (map, foldl)
 
 import Text.ParserCombinators.ReadP
 
@@ -45,7 +45,7 @@
 	UBound x -> expr ++ " <= " ++ show x
 	Bound l u -> show l ++ " <= " ++ expr ++ " <= " ++ show u
 
-showFunc :: (Show v, Num c, Ord c) => LinFunc v c -> String
+showFunc :: (Show v, Num c, Ord c, Show c) => LinFunc v c -> String
 showFunc func = case assocs func of
 	[]	-> "0"
 	((v,c):vcs) ->
@@ -61,7 +61,7 @@
 	| isSpace c	= '_'
 	| otherwise	= c
 
-instance (Show v, Num c, Ord c) => Show (Constraint v c) where
+instance (Show v, Num c, Ord c, Show c) => Show (Constraint v c) where
 	show (Constr lab func bds) = maybe "" (++ ": ") lab ++
 		showBds (showFunc func) bds
 
diff --git a/glpk-hs.cabal b/glpk-hs.cabal
--- a/glpk-hs.cabal
+++ b/glpk-hs.cabal
@@ -1,5 +1,5 @@
 Name:           glpk-hs
-Version:        0.3.1
+Version:        0.3.2
 Author:         Louis Wasserman
 License:        BSD3
 License-file:   LICENSE
@@ -23,27 +23,28 @@
 
 extra-source-files: examples/example1.hs
 
-Build-Depends:    base >= 4 && < 5, array, containers, mtl, deepseq
-Exposed-modules:  Data.LinearProgram,
-                  Data.LinearProgram.Common,
-		  Data.LinearProgram.LinExpr,
-                  Data.LinearProgram.GLPK,
-                  Data.LinearProgram.GLPK.Solver,
-                  Data.LinearProgram.GLPK.IO,
-                  Data.Algebra,
-                  Control.Monad.LPMonad,
-                  Control.Monad.LPMonad.Supply,
-                  Control.Monad.LPMonad.Supply.Class
-Other-modules:    Data.LinearProgram.GLPK.Internal,	
-                  Data.LinearProgram.GLPK.Types,
-                  Data.LinearProgram.GLPK.Common,
-                  Data.LinearProgram.GLPK.IO.Internal,
-                  Control.Monad.LPMonad.Internal,
-                  Data.LinearProgram.Spec,
-                  Data.LinearProgram.Types,
-                  Data.Algebra.Group,
-                  Data.Algebra.Ring,
-                  Data.Algebra.Module,
-		  Data.Algebra.Field
-c-sources:        glpk/glpk.c
-extra-libraries:  glpk
+library
+  Build-Depends:    base >= 4 && < 5, array, containers, mtl, deepseq
+  Exposed-modules:  Data.LinearProgram,
+                    Data.LinearProgram.Common,
+                    Data.LinearProgram.LinExpr,
+                    Data.LinearProgram.GLPK,
+                    Data.LinearProgram.GLPK.Solver,
+                    Data.LinearProgram.GLPK.IO,
+                    Data.Algebra,
+                    Control.Monad.LPMonad,
+                    Control.Monad.LPMonad.Supply,
+                    Control.Monad.LPMonad.Supply.Class
+  Other-modules:    Data.LinearProgram.GLPK.Internal,	
+                    Data.LinearProgram.GLPK.Types,
+                    Data.LinearProgram.GLPK.Common,
+                    Data.LinearProgram.GLPK.IO.Internal,
+                    Control.Monad.LPMonad.Internal,
+                    Data.LinearProgram.Spec,
+                    Data.LinearProgram.Types,
+                    Data.Algebra.Group,
+                    Data.Algebra.Ring,
+                    Data.Algebra.Module,
+                    Data.Algebra.Field
+  c-sources:        glpk/glpk.c
+  extra-libraries:  glpk
