diff --git a/fclabels.cabal b/fclabels.cabal
--- a/fclabels.cabal
+++ b/fclabels.cabal
@@ -1,5 +1,5 @@
 Name:          fclabels
-Version:       1.0.5
+Version:       1.1.0
 Author:        Sebastiaan Visser, Erik Hesselink, Chris Eidhof, Sjoerd Visscher.
 Synopsis:      First class accessor labels.
 Description:   This package provides first class labels that can act as
@@ -19,10 +19,11 @@
                .
                See the "Data.Label.Maybe" module for the use of partial labels.
                .
-               > 1.0.4 -> 1.0.5
-               >   - Relaxed template-haskell dependency constraint for GHC 7.4
-               >   - Relaxed transformers dependency constraint
-               >   (thanks to Claude Heiland-Allen)
+               > 1.0.4 -> 1.1.0
+               >   - Fixed error in derived code in combination with -XMonoLocalBinds.
+               >   - Lowered the priority of =: operator.
+               >   - Added the =. operator for modification in state monads.
+
 Maintainer:    Sebastiaan Visser <code@fvisser.nl>
 License:       BSD3
 License-File:  LICENCE
@@ -46,9 +47,9 @@
   GHC-Options: -Wall
   Build-Depends:
       base                       < 5
-    , template-haskell >= 2.2 && < 2.8
+    , template-haskell >= 2.2 && < 2.7
     , mtl              >= 1.0 && < 2.2
-    , transformers     >= 0.2 && < 0.4
+    , transformers     >= 0.2 && < 0.3
 
 Source-Repository head
   Type:     git
diff --git a/src/Data/Label/Derive.hs b/src/Data/Label/Derive.hs
--- a/src/Data/Label/Derive.hs
+++ b/src/Data/Label/Derive.hs
@@ -101,7 +101,7 @@
       where
         mono = forallT prettyVars (return []) [t| $(inputType) :~> $(return prettyFieldtyp) |]
         poly = forallT forallVars (return []) [t| (ArrowChoice $(arrow), ArrowZero $(arrow)) => Lens $(arrow) $(inputType) $(return prettyFieldtyp) |]
-        body = [| let c = zeroArrow ||| returnA in lens (c . $(getter)) (c . $(setter)) |]
+        body = [| lens (fromRight . $(getter)) (fromRight . $(setter)) |]
           where
             getter    = [| arr (\    p  -> $(caseE [|p|] (cases (bodyG [|p|]      ) ++ wild))) |]
             setter    = [| arr (\(v, p) -> $(caseE [|p|] (cases (bodyS [|p|] [|v|]) ++ wild))) |]
@@ -149,6 +149,9 @@
     function (s, b) = liftM2 (,) 
         (sigD labelName s)
         (funD labelName [ clause [] (normalB b) [] ])
+
+fromRight :: (ArrowChoice a, ArrowZero a) => a (Either b d) d
+fromRight = zeroArrow ||| returnA
 
 -------------------------------------------------------------------------------
 
diff --git a/src/Data/Label/Maybe.hs b/src/Data/Label/Maybe.hs
--- a/src/Data/Label/Maybe.hs
+++ b/src/Data/Label/Maybe.hs
@@ -53,8 +53,8 @@
 modify :: (f :~> a) -> (a -> a) -> f -> Maybe f
 modify l m = run (A.modify l . arr (arr m,))
 
--- | Embed a pure lens that points to a `Maybe` field into
--- a lens that might fail.
+-- | Embed a pure lens that points to a `Maybe` field into a lens that might
+-- fail.
 
 embed :: A.Lens (->) f (Maybe a) -> f :~> a
 embed l = lens (A.get l) (\a f -> Just (A.set l (Just a, f)))
diff --git a/src/Data/Label/PureM.hs b/src/Data/Label/PureM.hs
--- a/src/Data/Label/PureM.hs
+++ b/src/Data/Label/PureM.hs
@@ -6,6 +6,7 @@
 , puts
 , modify
 , (=:)
+, (=.)
 
 -- * 'MonadReader' lens operations.
 , asks
@@ -28,17 +29,23 @@
 puts :: M.MonadState s m => s :-> a -> a -> m ()
 puts l = M.modify . L.set l
 
+-- | Modify a value with a function somewhere in the state, pointed to by the
+-- specified lens.
+
+modify :: M.MonadState s m => s :-> a -> (a -> a) -> m ()
+modify l = M.modify . L.modify l
+
 -- | Alias for `puts' that reads like an assignment.
 
-infixr 7 =:
+infixr 2 =:
 (=:) :: M.MonadState s m => s :-> a -> a -> m ()
 (=:) = puts
 
--- | Modify a value with a function somewhere in the state, pointed to by the
--- specified lens.
+-- | Alias for `modify' that reads more or less like an assignment.
 
-modify :: M.MonadState s m => s :-> a -> (a -> a) -> m ()
-modify l = M.modify . L.modify l
+infixr 2 =.
+(=.) :: M.MonadState s m => s :-> a -> (a -> a) -> m ()
+(=.) = modify
 
 -- | Fetch a value pointed to by a lens out of a reader environment.
 
