diff --git a/examples/example1.hs b/examples/example1.hs
--- a/examples/example1.hs
+++ b/examples/example1.hs
@@ -17,7 +17,7 @@
 lp = execLPM $ do
   setDirection Max
   setObjective objFun
-  leqTo (add $ map (1 *&) ["x1", "x2", "x3"]) 100
+  leqTo (Data.LinearProgram.sum $ map (1 *&) ["x1", "x2", "x3"]) 100
   leqTo (10 *& "x1" + 4 *& "x2" + 5 *& "x3") 600
   leqTo (linCombination [(2, "x1"), (2, "x2"), (6, "x3")]) 300
   varGeq "x1" 0
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.7
+Version:        0.8
 Author:         Louis Wasserman
 License:        BSD3
 License-file:   LICENSE
diff --git a/src/Data/LinearProgram/Common.hs b/src/Data/LinearProgram/Common.hs
--- a/src/Data/LinearProgram/Common.hs
+++ b/src/Data/LinearProgram/Common.hs
@@ -13,7 +13,7 @@
 import GHC.Exts (build)
 
 {-# RULES
-	"assocs" assocs = \ m -> build (\ c n -> foldWithKey (curry c) n m);
-	"elems" elems = \ m -> build (\ c n -> foldWithKey (const c) n m);
-	"keys" keys = \ m -> build (\ c n -> foldWithKey (\ k _ -> c k) n m);
+	"assocs" assocs = \ m -> build (\ c n -> foldrWithKey (curry c) n m);
+	"elems" elems = \ m -> build (\ c n -> foldrWithKey (const c) n m);
+	"keys" keys = \ m -> build (\ c n -> foldrWithKey (\ k _ -> c k) n m);
 	#-}
diff --git a/src/Data/LinearProgram/GLPK/Types.hs b/src/Data/LinearProgram/GLPK/Types.hs
--- a/src/Data/LinearProgram/GLPK/Types.hs
+++ b/src/Data/LinearProgram/GLPK/Types.hs
@@ -4,6 +4,7 @@
 
 import Control.Concurrent (runInBoundThread)
 import Control.Exception (bracket)
+import qualified Control.Monad.Fail as Fail
 import Control.Monad.Trans (MonadIO (..))
 import Control.Monad (ap)
 
@@ -35,6 +36,8 @@
         return x = GLP $ \ _ -> return x
         m >>= k = GLP $ \ lp -> do      x <- execGLPK m lp
                                         execGLPK (k x) lp
+instance Fail.MonadFail GLPK where
+        fail s = GLP . const $ Fail.fail s
 instance Functor GLPK where
   fmap f (GLP k) = GLP $ \p -> fmap f (k p)
 
diff --git a/src/Data/LinearProgram/LinExpr.hs b/src/Data/LinearProgram/LinExpr.hs
--- a/src/Data/LinearProgram/LinExpr.hs
+++ b/src/Data/LinearProgram/LinExpr.hs
@@ -5,6 +5,7 @@
 
 import Data.LinearProgram.Types
 import Algebra.Classes
+import Algebra.Linear
 import Data.Functor
 import Data.Foldable
 
