diff --git a/antisplice.cabal b/antisplice.cabal
--- a/antisplice.cabal
+++ b/antisplice.cabal
@@ -10,7 +10,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             0.17.0.2
+version:             0.17.0.3
 
 -- A short (one-line) description of the package.
 synopsis:            An engine for text-based dungeons.
@@ -57,7 +57,7 @@
   other-extensions:    TemplateHaskell, QuasiQuotes, FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances, FlexibleContexts, UndecidableInstances, RankNTypes, TypeFamilies, FunctionalDependencies, LambdaCase, ScopedTypeVariables, ExistentialQuantification, TupleSections, RecordWildCards, DeriveDataTypeable
   
   -- Other library packages from which modules are imported.
-  build-depends:       base >=4.6 && <4.7, chatty >=0.6 && <0.7, chatty-utils >= 0.7 && <0.8, text >=0.11 && <0.12, template-haskell >=2.8 && <2.9, mtl >=2.1 && <2.2, transformers >=0.3 && <0.4, haskeline >= 0.7 && < 0.8, time >= 1.4 && < 1.5
+  build-depends:       base >=4.6 && <4.8, chatty >=0.6 && <0.7, chatty-utils >= 0.7 && <0.8, text >=1.1 && <1.2, template-haskell >=2.8 && <2.10, mtl >=2.1 && <2.2, transformers >=0.3 && <0.4, haskeline >= 0.7 && < 0.8, time >= 1.4 && < 1.5
   
   -- Directories containing source files.
   hs-source-dirs:      src
diff --git a/src/Game/Antisplice/Monad.hs b/src/Game/Antisplice/Monad.hs
--- a/src/Game/Antisplice/Monad.hs
+++ b/src/Game/Antisplice/Monad.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE TemplateHaskell, TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts #-}
+{-# LANGUAGE TemplateHaskell, TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts, UndecidableInstances #-}
 
 {-
   This module is part of Antisplice.
@@ -49,15 +49,15 @@
 --import Language.Haskell.TH
 import System.IO
 
-mkInteractor ''SplErrT mkChatty mkRoom mkDungeon mkObject mkCounter mkPlayer mkIO mkVocab mkAtoms (mkChannelPrinter ''PlayerId)
-mkInteractor ''DungeonT mkPrinter mkDefCP mkExtendedPrinter mkScanner mkFinalizer mkClock mkExpanderEnv mkHistoryEnv mkRandom (mkFail ''SplErr) mkCounter mkIO  mkVocab mkAtoms (mkChannelPrinter ''PlayerId)
-mkInteractor ''RoomT mkChatty (mkFail ''SplErr) mkCounter mkIO mkVocab mkAtoms (mkChannelPrinter ''PlayerId)
-mkInteractor ''ObjectT mkChatty (mkFail ''SplErr) mkCounter mkIO mkVocab mkAtoms (mkChannelPrinter ''PlayerId)
-mkInteractor ''CounterT mkChatty (mkFail ''SplErr) mkRoom mkObject mkDungeon mkPlayer mkIO mkVocab mkAtoms (mkChannelPrinter ''PlayerId)
-mkInteractor ''PlayerT mkChatty (mkFail ''SplErr) mkCounter mkIO mkVocab mkAtoms (mkChannelPrinter ''PlayerId)
-mkInteractor ''VocabT mkChatty (mkFail ''SplErr) mkCounter mkDungeon mkRoom mkAtoms mkPlayer (mkChannelPrinter ''PlayerId)
-mkInteractor ''AtomStoreT mkChatty (mkFail ''SplErr) mkDungeon mkRoom mkVocab mkPlayer (mkChannelPrinter ''PlayerId)
-mkInteractor ''PlayerFilterT mkArchiver mkVocab mkAtoms mkCounter
+mkInteractor ''SplErrT mkChatty mkRoom mkDungeon mkObject mkPlayer mkIO mkVocab (mkChannelPrinter ''PlayerId)
+mkInteractor ''DungeonT mkPrinter mkDefCP mkExtendedPrinter mkScanner mkFinalizer mkClock mkExpanderEnv mkHistoryEnv mkRandom (mkFail ''SplErr) mkCounter mkAtoms mkIO  mkVocab (mkChannelPrinter ''PlayerId)
+mkInteractor ''RoomT mkChatty (mkFail ''SplErr) mkIO mkVocab (mkChannelPrinter ''PlayerId)
+mkInteractor ''ObjectT mkChatty (mkFail ''SplErr) mkIO mkVocab (mkChannelPrinter ''PlayerId)
+mkInteractor ''CounterT (mkFail ''SplErr) mkRoom mkObject mkDungeon mkPlayer mkIO mkVocab (mkChannelPrinter ''PlayerId)
+mkInteractor ''PlayerT mkChatty (mkFail ''SplErr) mkIO mkVocab (mkChannelPrinter ''PlayerId)
+mkInteractor ''VocabT mkChatty (mkFail ''SplErr) mkDungeon mkRoom mkPlayer (mkChannelPrinter ''PlayerId)
+mkInteractor ''AtomStoreT (mkFail ''SplErr) mkDungeon mkRoom mkVocab mkPlayer (mkChannelPrinter ''PlayerId)
+mkInteractor ''PlayerFilterT mkArchiver mkVocab
 liftM concat $ forM [''AnsiPrinterT,''HtmlPrinterT,''ExpanderT,''NullExpanderT,''RecorderT] $ \s ->
   mkInteractor s (mkChannelPrinter ''PlayerId) mkDungeon mkPlayer mkRoom (mkFail ''SplErr)
 
diff --git a/src/Game/Antisplice/Stereos.hs b/src/Game/Antisplice/Stereos.hs
--- a/src/Game/Antisplice/Stereos.hs
+++ b/src/Game/Antisplice/Stereos.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE FlexibleContexts, MultiParamTypeClasses, TemplateHaskell, RecordWildCards #-}
+{-# LANGUAGE FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, TemplateHaskell, RecordWildCards, UndecidableInstances #-}
 
 {-
   This module is part of Antisplice.
@@ -160,7 +160,7 @@
   (_,s) <- runStereoBuilderT m none
   registerStereo s
 
-mkInteractor ''StereoBuilderT mkChatty (mkFail ''SplErr) mkDungeon mkRoom mkVocab mkCounter mkAtoms mkPlayer mkIO mkObject (mkChannelPrinter ''PlayerId)
+mkInteractor ''StereoBuilderT mkChatty (mkFail ''SplErr) mkDungeon mkRoom mkVocab mkPlayer mkIO mkObject (mkChannelPrinter ''PlayerId)
 
 -- | Default stereotype.
 defaultStereo :: MonadVocab m => m PlayerStereo
diff --git a/src/Game/Antisplice/Templates.hs b/src/Game/Antisplice/Templates.hs
--- a/src/Game/Antisplice/Templates.hs
+++ b/src/Game/Antisplice/Templates.hs
@@ -67,13 +67,6 @@
   |]
   where sx = strToType s
 
--- | Automatically derive an instance for 'MonadCounter'
-mkCounter s = [d|
-    instance ChCounter m => ChCounter ($sx m) where
-      countOn = lift countOn
-  |]
-  where sx = strToType s
-
 -- | Automatically derive an instance for 'MonadObject'
 mkObject s = [d|
     instance MonadObject m => MonadObject ($sx m) where
@@ -104,15 +97,4 @@
       insertVocab k = lift . insertVocab k
       vocabKnown = lift . vocabKnown
   |]
-  where sx = strToType s
-
--- | Automatically derive an instance for 'MonadAtoms'
-mkAtoms s = [d|
-    instance ChAtoms m => ChAtoms ($sx m) where
-      newAtom = lift newAtom
-      putAtom k = lift . putAtom k
-      getAtom = lift . getAtom
-      dispAtom = lift . dispAtom
-      cloneAtom = lift . cloneAtom
-  |]           
   where sx = strToType s
