diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [0.1.4]
+### Add
+- (#74) `makeWorldAndComponents`, similar to how it exists in apecs proper
+
 ## [0.1.3]
 ### Changed
 - (#60) Add `Component` type names in non-existent component errors
diff --git a/apecs-stm.cabal b/apecs-stm.cabal
--- a/apecs-stm.cabal
+++ b/apecs-stm.cabal
@@ -1,19 +1,17 @@
-name:                apecs-stm
-version:             0.1.3
-homepage:            https://github.com/jonascarpay/apecs-stm#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:            STM stores for apecs
-description:
-  Apecs stores that live in the STM monad, and other tools.
-
+name:               apecs-stm
+version:            0.1.4
+homepage:           https://github.com/jonascarpay/apecs-stm#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:           STM stores for apecs
+description:        Apecs stores that live in the STM monad, and other tools.
 extra-source-files:
-  README.md,
+  README.md
   CHANGELOG.md
 
 source-repository head
@@ -21,20 +19,20 @@
   location: git://github.com/jonascarpay/apecs-stm.git
 
 library
-  hs-source-dirs:
-    src
+  hs-source-dirs:   src
   exposed-modules:
-    Apecs.STM, Apecs.STM.Prelude
-  default-language:
-    Haskell2010
+    Apecs.STM
+    Apecs.STM.Prelude
+
+  default-language: Haskell2010
   build-depends:
-    apecs            >= 0.7  && < 0.10,
-    base             >= 4.9  && < 5,
-    containers       >= 0.5  && < 0.8,
-    list-t           >= 1    && < 1.2,
-    stm              >= 2.3  && < 3,
-    stm-containers   >= 1.1  && < 2,
-    template-haskell >= 2.12 && < 3,
-    vector           >= 0.10 && < 0.13
-  ghc-options:
-    -Wall
+      apecs             >=0.7  && <0.10
+    , base              >=4.9  && <5
+    , containers        >=0.5  && <0.8
+    , list-t            >=1    && <1.2
+    , stm               >=2.3  && <3
+    , stm-containers    >=1.1  && <2
+    , template-haskell  >=2.12 && <3
+    , vector            >=0.10 && <0.13
+
+  ghc-options:      -Wall
diff --git a/src/Apecs/STM.hs b/src/Apecs/STM.hs
--- a/src/Apecs/STM.hs
+++ b/src/Apecs/STM.hs
@@ -18,7 +18,7 @@
   , Global (..)
     -- * EntityCounter
   , EntityCounter (..)
-  , nextEntity, newEntity, makeWorld
+  , nextEntity, newEntity, makeWorld, makeWorldAndComponents
     -- * STM conveniences
   , atomically, retry, check, forkSys, threadDelay, STM
   ) where
@@ -40,7 +40,7 @@
 import           Apecs                       (ask, get, global, lift, liftIO,
                                               runSystem, set)
 import           Apecs.Core
-import           Apecs.TH                    (makeWorldNoEC)
+import           Apecs.TH                    (makeWorldNoEC, makeMapComponentsFor)
 
 newtype Map c = Map (M.Map Int c)
 type instance Elem (Map c) = c
@@ -184,6 +184,13 @@
 -- | Like @makeWorld@ from @Apecs@, but uses the STM @EntityCounter@
 makeWorld :: String -> [Name] -> Q [Dec]
 makeWorld worldName cTypes = makeWorldNoEC worldName (cTypes ++ [''EntityCounter])
+
+-- | Like @makeWorldAndComponents@ from @Apecs@, but uses the STM @EntityCounter@ and the STM @Map@
+makeWorldAndComponents :: String -> [Name] -> Q [Dec]
+makeWorldAndComponents worldName cTypes = do
+  wdecls <- makeWorld worldName cTypes
+  cdecls <- makeMapComponentsFor ''Map cTypes
+  pure $ wdecls ++ cdecls
 
 -- | @atomically@ from STM, lifted to the System level.
 atomically :: SystemT w STM a -> SystemT w IO a
diff --git a/src/Apecs/STM/Prelude.hs b/src/Apecs/STM/Prelude.hs
--- a/src/Apecs/STM/Prelude.hs
+++ b/src/Apecs/STM/Prelude.hs
@@ -7,7 +7,7 @@
   ) where
 
 import           Apecs     hiding (EntityCounter, Global, Map, System, Unique,
-                            makeWorld, newEntity)
+                            makeWorld, makeWorldAndComponents, newEntity)
 import           Apecs.STM
 
 type System w a = SystemT w STM a
