diff --git a/lens-family.cabal b/lens-family.cabal
--- a/lens-family.cabal
+++ b/lens-family.cabal
@@ -1,13 +1,13 @@
 name:               lens-family
 category:           Data, Lenses
-version:            1.2.1
+version:            1.2.2
 license:            BSD3
 cabal-version:      >= 1.6
 license-file:       LICENSE
 author:             Russell O'Connor
 maintainer:         Russell O'Connor <roconnor@theorem.ca>
 stability:          experimental
-copyright:          Copyright (C) 2012,2013,2014 Russell O'Connor
+copyright:          Copyright (C) 2012,2013,2014,2017 Russell O'Connor
 synopsis:           Lens Families
 description:        Lens Families
 build-type:         Simple
@@ -32,11 +32,11 @@
 library
   extensions:       Rank2Types
   build-depends:
-    base                 >= 4       && < 5,
-    containers           >= 0.3     && < 0.6,
+    base                 >= 4.8     && < 5,
+    containers           >= 0.5.8   && < 0.6,
     transformers         >= 0.2.0   && < 0.6,
     mtl                  >= 2.1     && < 2.3,
-    lens-family-core     >= 1.2     && < 1.3
+    lens-family-core     >= 1.2.2   && < 1.3
 
   exposed-modules:
     Lens.Family2.Unchecked
diff --git a/src/Lens/Family2/State/Lazy.hs b/src/Lens/Family2/State/Lazy.hs
--- a/src/Lens/Family2/State/Lazy.hs
+++ b/src/Lens/Family2/State/Lazy.hs
@@ -14,6 +14,12 @@
   , (//=)
   , (&&=), (||=)
   , (<>=)
+-- * Strict Assignments
+  , (%!=)
+  , (+!=), (-!=), (*!=)
+  , (//!=)
+  , (&&!=), (||!=)
+  , (<>!=)
 -- * Types
   , LFS.Zooming
 -- * Re-exports
@@ -28,7 +34,7 @@
 import Data.Tuple (swap)
 import Control.Monad (liftM)
 import Control.Monad.Trans.Writer.Lazy (Writer, writer, runWriter)
-import Control.Monad.State.Lazy (MonadState, get, modify, state)
+import Control.Monad.State.Lazy (MonadState, get, modify, modify', state)
 import Lens.Family2 ( LensLike, LensLike'
                     , FoldLike, Constant
                     , Setter, Setter', Identical
@@ -127,3 +133,32 @@
 -- | Monoidally append a value to all referenced fields of the state.
 (<>=) :: (Monoid o, MonadState a m) => Setter' a o -> o -> m ()
 f <>= b = f %= (`mappend` b)
+
+infix 4 %!=
+
+-- | Strictly modify a field of the state.
+(%!=) :: MonadState a m => Setter a a b b' -> (b -> b') -> m ()
+l %!= f = modify' (l %~ f)
+
+infixr 4 +!=, -!=, *!=
+
+(+!=), (-!=), (*!=) :: (MonadState a m, Num b) => Setter' a b -> b -> m ()
+f +!= b = f %!= (+ b)
+f -!= b = f %!= subtract b
+f *!= b = f %!= (* b)
+
+infixr 4 //!=
+
+(//!=) :: (MonadState a m, Fractional b) => Setter' a b -> b -> m ()
+f //!= b = f %!= (/ b)
+
+infixr 4 &&!=, ||!=
+
+(&&!=), (||!=) :: MonadState a m => Setter' a Bool -> Bool -> m ()
+f &&!= b = f %!= (&& b)
+f ||!= b = f %!= (|| b)
+
+infixr 4 <>!=
+
+(<>!=) :: (Monoid o, MonadState a m) => Setter' a o -> o -> m ()
+f <>!= b = f %!= (`mappend` b)
diff --git a/src/Lens/Family2/State/Strict.hs b/src/Lens/Family2/State/Strict.hs
--- a/src/Lens/Family2/State/Strict.hs
+++ b/src/Lens/Family2/State/Strict.hs
@@ -14,6 +14,12 @@
   , (//=)
   , (&&=), (||=)
   , (<>=)
+-- * Strict Assignments
+  , (%!=)
+  , (+!=), (-!=), (*!=)
+  , (//!=)
+  , (&&!=), (||!=)
+  , (<>!=)
 -- * Types
   , LFS.Zooming
 -- * Re-exports
@@ -28,7 +34,7 @@
 import Data.Tuple (swap)
 import Control.Monad (liftM)
 import Control.Monad.Trans.Writer.Lazy (Writer, writer, runWriter)
-import Control.Monad.State.Strict (MonadState, get, modify, state)
+import Control.Monad.State.Strict (MonadState, get, modify, modify', state)
 import Lens.Family2 ( LensLike, LensLike'
                     , FoldLike, Constant
                     , Setter, Setter', Identical
@@ -127,3 +133,32 @@
 -- | Monoidally append a value to all referenced fields of the state.
 (<>=) :: (Monoid o, MonadState a m) => Setter' a o -> o -> m ()
 f <>= b = f %= (`mappend` b)
+
+infix 4 %!=
+
+-- | Strictly modify a field of the state.
+(%!=) :: MonadState a m => Setter a a b b' -> (b -> b') -> m ()
+l %!= f = modify' (l %~ f)
+
+infixr 4 +!=, -!=, *!=
+
+(+!=), (-!=), (*!=) :: (MonadState a m, Num b) => Setter' a b -> b -> m ()
+f +!= b = f %!= (+ b)
+f -!= b = f %!= subtract b
+f *!= b = f %!= (* b)
+
+infixr 4 //!=
+
+(//!=) :: (MonadState a m, Fractional b) => Setter' a b -> b -> m ()
+f //!= b = f %!= (/ b)
+
+infixr 4 &&!=, ||!=
+
+(&&!=), (||!=) :: MonadState a m => Setter' a Bool -> Bool -> m ()
+f &&!= b = f %!= (&& b)
+f ||!= b = f %!= (|| b)
+
+infixr 4 <>!=
+
+(<>!=) :: (Monoid o, MonadState a m) => Setter' a o -> o -> m ()
+f <>!= b = f %!= (`mappend` b)
diff --git a/src/Lens/Family2/Stock.hs b/src/Lens/Family2/Stock.hs
--- a/src/Lens/Family2/Stock.hs
+++ b/src/Lens/Family2/Stock.hs
@@ -11,6 +11,7 @@
   , chosen
   , ix
   , at, intAt
+  , at', intAt'
   , contains, intContains
 -- * Stock Traversals
   , both
@@ -62,6 +63,14 @@
 -- | Lens on a given point of a 'IntMap.IntMap'.
 intAt :: Int -> Lens' (IntMap.IntMap v) (Maybe v)
 intAt = Stock.intAt
+
+-- | Lens providing strict access to a given point of a 'Map.Map'.
+at' :: Ord k => k -> Lens' (Map.Map k v) (Maybe v)
+at' = Stock.at'
+
+-- | Lens providing strict access to a given point of a 'IntMap.IntMap'.
+intAt' :: Int -> Lens' (IntMap.IntMap v) (Maybe v)
+intAt' = Stock.intAt'
 
 -- | Lens on a given point of a 'Set.Set'.
 contains :: Ord k => k -> Lens' (Set.Set k) Bool
