diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [0.9.3]
+### Added
+- `newEntity_ = void . newEntity`
+
 ## [0.9.2]
 ### Changed
 - (#68) Add instances of MonadThrow, MonadCatch, and MonadMask to SystemT
diff --git a/apecs.cabal b/apecs.cabal
--- a/apecs.cabal
+++ b/apecs.cabal
@@ -1,19 +1,19 @@
-name:                apecs
-version:             0.9.2
-homepage:            https://github.com/jonascarpay/apecs#readme
-license:             BSD3
-license-file:        LICENSE
-author:              Jonas Carpay
-maintainer:          jonascarpay@gmail.com
-category:            Game, Control, Data
-build-type:          Simple
-cabal-version:       >=1.10
-synopsis:            Fast Entity-Component-System library for game programming
+name:               apecs
+version:            0.9.3
+homepage:           https://github.com/jonascarpay/apecs#readme
+license:            BSD3
+license-file:       LICENSE
+author:             Jonas Carpay
+maintainer:         jonascarpay@gmail.com
+category:           Game, Control, Data
+build-type:         Simple
+cabal-version:      >=1.10
+synopsis:           Fast Entity-Component-System library for game programming
 description:
   apecs is a fast, type-driven Entity-Component-System library for game programming.
 
 extra-source-files:
-  README.md,
+  README.md
   CHANGELOG.md
 
 source-repository head
@@ -21,73 +21,61 @@
   location: git://github.com/jonascarpay/apecs.git
 
 library
-  hs-source-dirs:
-    src
+  hs-source-dirs:   src
   exposed-modules:
-    Apecs,
-    Apecs.Core,
-    Apecs.Components,
-    Apecs.Stores,
-    Apecs.System,
-    Apecs.TH,
-    Apecs.Util,
-
-    Apecs.Experimental.Components,
-    Apecs.Experimental.Reactive,
-    Apecs.Experimental.Stores,
+    Apecs
+    Apecs.Components
+    Apecs.Core
+    Apecs.Experimental.Components
+    Apecs.Experimental.Reactive
+    Apecs.Experimental.Stores
     Apecs.Experimental.Util
-  other-modules:
-    Apecs.THTuples
-  default-language:
-    Haskell2010
+    Apecs.Stores
+    Apecs.System
+    Apecs.TH
+    Apecs.Util
+
+  other-modules:    Apecs.THTuples
+  default-language: Haskell2010
   build-depends:
-    base             >= 4.9  && < 5,
-    array            >= 0.4  && < 0.6,
-    containers       >= 0.5  && < 0.8,
-    exceptions       >= 0.10.0 && < 0.11,
-    mtl              >= 2.2  && < 2.3,
-    template-haskell >= 2.12 && < 3,
-    vector           >= 0.11 && < 0.13
-  ghc-options:
-    -Wall
+      array             >=0.4    && <0.6
+    , base              >=4.9    && <5
+    , containers        >=0.5    && <0.8
+    , exceptions        >=0.10.0 && <0.11
+    , mtl               >=2.2    && <2.3
+    , template-haskell  >=2.12   && <3
+    , vector            >=0.11   && <0.13
 
+  ghc-options:      -Wall
+
 test-suite apecs-test
-  type:
-    exitcode-stdio-1.0
-  main-is:
-    Main.hs
-  hs-source-dirs:
-    test
+  type:             exitcode-stdio-1.0
+  main-is:          Main.hs
+  hs-source-dirs:   test
   build-depends:
-    apecs,
-    base       >= 4.9  && < 5,
-    containers >= 0.5  && < 0.8,
-    linear     >= 1.20 && < 2,
-    vector     >= 0.10 && < 0.13,
-    QuickCheck >= 2.10 && < 3
-  default-language:
-    Haskell2010
-  ghc-options: -Wall
+      apecs
+    , base        >=4.9  && <5
+    , containers  >=0.5  && <0.8
+    , linear      >=1.20 && <2
+    , QuickCheck  >=2.10 && <3
+    , vector      >=0.10 && <0.13
 
+  default-language: Haskell2010
+  ghc-options:      -Wall
+
 benchmark apecs-bench
-  type:
-    exitcode-stdio-1.0
-  hs-source-dirs:
-    bench
-  main-is:
-    Main.hs
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   bench
+  main-is:          Main.hs
   build-depends:
-    apecs,
-    base      >= 4.9  && < 5,
-    criterion >= 1.3  && < 2,
-    linear    >= 1.20 && < 2
-  default-language:
-    Haskell2010
+      apecs
+    , base       >=4.9  && <5
+    , criterion  >=1.3  && <2
+    , linear     >=1.20 && <2
+
+  default-language: Haskell2010
   ghc-options:
-    -Wall
-    -O2
-    -optlo-O3
-    -- -fllvm
-    -threaded
-    -funfolding-use-threshold1000
+    -Wall -O2 -optlo-O3 -threaded -funfolding-use-threshold1000
     -funfolding-keeness-factor1000
+
+-- -fllvm
diff --git a/src/Apecs.hs b/src/Apecs.hs
--- a/src/Apecs.hs
+++ b/src/Apecs.hs
@@ -20,7 +20,7 @@
 
   -- * Other
     runSystem, runWith,
-    runGC, EntityCounter, newEntity, global,
+    runGC, EntityCounter, newEntity, newEntity_, global,
     makeWorld, makeWorldAndComponents,
 
   -- * Re-exports
diff --git a/src/Apecs/TH.hs b/src/Apecs/TH.hs
--- a/src/Apecs/TH.hs
+++ b/src/Apecs/TH.hs
@@ -6,6 +6,7 @@
   , makeWorldNoEC
   , makeWorldAndComponents
   , makeMapComponents
+  , makeMapComponentsFor
   ) where
 
 import           Control.Monad
@@ -57,9 +58,17 @@
 makeMapComponents = mapM makeMapComponent
 
 makeMapComponent :: Name -> Q Dec
-makeMapComponent comp = do
-  let ct = return$ ConT comp
-  head <$> [d| instance Component $ct where type Storage $ct = Map $ct |]
+makeMapComponent = makeMapComponentFor ''Map
+
+-- | Allows customization of the store to be used. For example, the base 'Map' or an STM Map.
+makeMapComponentFor :: Name -> Name -> Q Dec
+makeMapComponentFor store comp = do
+  let ct = pure $ ConT comp
+      st = pure $ ConT store
+  head <$> [d| instance Component $ct where type Storage $ct = $st $ct |]
+
+makeMapComponentsFor :: Name -> [Name] -> Q [Dec]
+makeMapComponentsFor store = mapM (makeMapComponentFor store)
 
 -- | Calls 'makeWorld' and 'makeMapComponents', i.e. makes a world and also defines 'Component' instances with a 'Map' store.
 makeWorldAndComponents :: String -> [Name] -> Q [Dec]
diff --git a/src/Apecs/Util.hs b/src/Apecs/Util.hs
--- a/src/Apecs/Util.hs
+++ b/src/Apecs/Util.hs
@@ -13,7 +13,7 @@
   runGC, global,
 
   -- * EntityCounter
-  EntityCounter(..), nextEntity, newEntity,
+  EntityCounter(..), nextEntity, newEntity, newEntity_,
 ) where
 
 import           Control.Applicative  (liftA2)
@@ -53,6 +53,15 @@
 newEntity c = do ety <- nextEntity
                  set ety c
                  return ety
+
+-- | Writes the given components to a new entity without yelding the result.
+-- Used mostly for convenience.
+{-# INLINE newEntity_ #-}
+newEntity_ :: (MonadIO m, Set world m component, Get world m EntityCounter)
+           => component -> SystemT world m ()
+newEntity_ component = do
+  entity <- nextEntity
+  set entity component
 
 -- | Explicitly invoke the garbage collector
 runGC :: System w ()
