diff --git a/Data/TrieMap.hs b/Data/TrieMap.hs
--- a/Data/TrieMap.hs
+++ b/Data/TrieMap.hs
@@ -9,7 +9,9 @@
 	-- ** Components
 	key,
 	before,
+	beforeWith,
 	after,
+	afterWith,
 	-- ** Locations in maps
 	search,
 	index,
@@ -1022,6 +1024,14 @@
 {-# INLINE after #-}
 after :: TKey k => TLocation k a -> TMap k a
 after (TLoc _ hole) = TMap (afterM hole)
+
+-- | @'beforeWith' a loc@ is equivalent to @'insert' ('key' loc) a ('before' loc)@.
+beforeWith :: TKey k => a -> TLocation k a -> TMap k a
+beforeWith a (TLoc k hole) = TMap (beforeWithM (Assoc k a) hole)
+
+-- | @'afterWith' a loc@ is equivalent to @'insert' ('key' loc) a ('after' loc)@.
+afterWith :: TKey k => a -> TLocation k a -> TMap k a
+afterWith a (TLoc k hole) = TMap (afterWithM (Assoc k a) hole)
 
 -- | Search the map for the given key, returning the
 -- corresponding value (if any) and an updatable location for that key.
diff --git a/TrieMap.cabal b/TrieMap.cabal
--- a/TrieMap.cabal
+++ b/TrieMap.cabal
@@ -1,5 +1,5 @@
 name:		     TrieMap
-version:             4.0.0
+version:             4.0.1
 cabal-version:       >= 1.6
 tested-with:	     GHC
 category:            Algorithms
@@ -10,6 +10,8 @@
                      .
                      The most recent release combines zipper-based ideas from recently proposed changes to Data.Map, as well
                      as heavily optimized ByteString and Vector instances based on the vector package.
+                     
+                     For best performance, use @cabal install -fllvm -O2@.
 license:             BSD3
 license-file:	     LICENSE
 author:              Louis Wasserman
@@ -21,13 +23,18 @@
   type:              git
   location:          git@github.com:lowasser/TrieMap.git
 
+Flag LLVM {
+  Description: Compile with LLVM, because you mean srs bzns
+  Default: False
+}
+
 Library{
 build-Depends:    base < 5.0.0.0, containers, template-haskell >= 2.5.0.0, bytestring >= 0.9.1.0, th-expand-syns,
                   vector >= 0.6, primitive >= 0.3, unpack-funcs >= 0.1.2, transformers >= 0.2.0.0
 ghc-options:
-  -Wall -fno-warn-name-shadowing -fno-warn-orphans -O2 -fno-spec-constr-count -fno-spec-constr-threshold
+  -Wall -fno-warn-name-shadowing -fno-warn-orphans -fno-spec-constr-count -fno-spec-constr-threshold
   -fno-liberate-case-threshold -fmax-worker-args=100
-if impl(ghc >= 7.0.0)
+if impl(ghc >= 7.0.0) && flag(LLVM)
   ghc-options: -fllvm -optlo-O3 -optlo-std-compile-opts
 exposed-modules:  
   Data.TrieMap,
