diff --git a/Game/Antisplice/Dungeon/Ironforge.hs b/Game/Antisplice/Dungeon/Ironforge.hs
--- a/Game/Antisplice/Dungeon/Ironforge.hs
+++ b/Game/Antisplice/Dungeon/Ironforge.hs
@@ -92,7 +92,7 @@
     mergeStereoM visualStereo
     mergeStereoM manualStereo
     mergeStereoM consumeStereo
-    mergeSkillM $ skill "oink" !+ validConsumer EnsureLineEnd (\_ -> mprintLn "Oink!") !+ implyGlobalCooldownA !+> implyCooldownA 5000
+    mergeSkillM $ skill "oink" !+ EnsureLineEnd :-: Nil #->> mprintLn "Oink!" !+ implyGlobalCooldownA !+> implyCooldownA 5000
     mergeSkill $ skill "bake" !+ callRecipe byCooking
   subscribePlayer $ do
     setPlayerRoom greatForge
diff --git a/Game/Antisplice/Dungeon/Ironforge/Cambridge.hs b/Game/Antisplice/Dungeon/Ironforge/Cambridge.hs
--- a/Game/Antisplice/Dungeon/Ironforge/Cambridge.hs
+++ b/Game/Antisplice/Dungeon/Ironforge/Cambridge.hs
@@ -112,7 +112,7 @@
         0 -> mprintLn =<< drunken "Cashier: \"Welcome!\""
         n -> mprintLn =<< drunken (printf "Cashier: \"That's $%i.%02i.\"" (n `div` 100) (n `mod` 100))
       cashierSte <- registerStereoM $ do
-        mergeSkill $ skill "pay" !+ validCondition Nil (\_ -> do c <- getCurrency money; a <- getAtom cartA; return (c>=a))
+        mergeSkill $ skill "pay" !+ validCondition Nil (\_ -> do c <- getCurrency money; a <- getAtom cartA; return (if c>=a then Nothing else Just $ Uncon "You don't have enough money."))
                                  !+ validConsumer Nil (\_ -> do a <- getAtom cartA; modifyCurrency money (subtract a))
                                  !+ validConsumer Nil (\_ -> mprintLn =<< drunken "Cashier: \"Thank you for choosing our market!\"")
                                  !+ validConsumer Nil (\_ -> putAtom cartA 0)
@@ -128,8 +128,8 @@
       forM_ os $ removeRoomObject . objectIdOf
       enterAndAnnounce cellJ)
   gatedPath superMarket broele2WC South $ ActionBefore $
-    let pq :: Prerequisite
-        pq = return True
+    let pq :: Predicate
+        pq = return Nothing
         h :: Handler
         h = getAtom cartA >>= \a -> when (a>0) $ withRoom broele2WC $ do
           officer <- addRoomObject $ do
diff --git a/Game/Antisplice/Dungeon/Ironforge/IronforgeCity.hs b/Game/Antisplice/Dungeon/Ironforge/IronforgeCity.hs
--- a/Game/Antisplice/Dungeon/Ironforge/IronforgeCity.hs
+++ b/Game/Antisplice/Dungeon/Ironforge/IronforgeCity.hs
@@ -117,7 +117,7 @@
     addRoomObject $ do
       ctorMob "the barkeeper" ["barkeeper"] "This is the old and friendly barkeeper." ["old","friendly"]
       barKeeperSte <- registerStereoM $ do
-        mergeSkill $ skill "order" !+ validConsumer (Noun "beer") (\_ -> do
+        mergeSkill $ skill "order" !+ Noun "beer" :-: Nil #->> do
               mapAtom (+250) billA
               b <- getAtom billA
               mprintLn =<< drunken (printf "The barkeeper brings you a beer.\nBarkeeper: \"That's $%i.%02i.\"" (b `div` 100) (b `mod` 100))
@@ -125,10 +125,10 @@
                 ctorAcq "a huge glass of strong beer" "This is a huge glass of dwarven strong beer." ["beer","glass"] ["huge","strong","dwarven"]
                 addFeature Drinkable
                 onDrink $ consumeAlcohol 12
-              acquireObject beer)
-        mergeSkill $ skill "pay" !+ validCondition Nil (\_ -> do c <- getCurrency money; a <- getAtom billA; return (c>=a))
-                                 !+ validConsumer Nil (\_ -> do a <- getAtom billA; modifyCurrency money (subtract a))
-                                 !+ validConsumer Nil (\_ -> putAtom billA 0)
+              acquireObject beer
+        mergeSkill $ skill "pay" !+ validCondition Nil (\_ -> do c <- getCurrency money; a <- getAtom billA; return (if c>=a then Nothing else Just $ Uncon "You don't have enough money."))
+                                 !+ Nil #->> (do a <- getAtom billA; modifyCurrency money (subtract a))
+                                 !+ Nil #->> putAtom billA 0
       addFeature $ Stereo Near barKeeperSte
     addRoomObject $ do
       ctorAcq "a rusty dagger" "This is a rusty old dagger, probably lost by a rouge." ["dagger"] ["rusty","old"]
@@ -202,7 +202,7 @@
                                                 onEat $ mprintLn "Yummie, that's really delicious!") (Just i) kPancake
                        modifyPlayerState $ \p -> p{playerInventoryOf= anyBstInsert o $ playerInventoryOf p})
     momSte <- registerStereoM $ do
-      mergeSkill $ skill "ask" !+ Prep "for" :-: "pancake" :-: "recipe" #->> do
+      mergeSkill $ skill "ask" !+ Prep "for" :-: Optional "pancake" :-: "recipe" :-: Nil #->> do
                                                                                  mprintLn "Mom: \"Yes, of course I got one!\"\nMom gives you the recipe."
                                                                                  i <- liftM ObjectId countOn
                                                                                  k <- liftM KindId countOn
diff --git a/ironforge.cabal b/ironforge.cabal
--- a/ironforge.cabal
+++ b/ironforge.cabal
@@ -10,7 +10,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             0.1.0.29
+version:             0.1.0.30
 
 -- A short (one-line) description of the package.
 synopsis:            A technical demo for Antisplice.
@@ -48,7 +48,7 @@
 library
   exposed-modules:  Game.Antisplice.Dungeon.Ironforge, Game.Antisplice.Dungeon.Ironforge.School, Game.Antisplice.Dungeon.Ironforge.IronforgeCity, Game.Antisplice.Dungeon.Ironforge.Cambridge, Game.Antisplice.Dungeon.Ironforge.Kinds
 
-  build-depends:       base >=4.6 && <4.7, chatty >=0.5.2 && <0.6, antisplice >=0.15 && <0.16, mtl >= 2.1 && < 2.2, transformers >= 0.3 && < 0.4
+  build-depends:       base >=4.6 && <4.7, chatty >=0.5.2 && <0.6, antisplice >=0.16 && <0.17, mtl >= 2.1 && < 2.2, transformers >= 0.3 && < 0.4
 
   default-language: Haskell2010
 
@@ -64,7 +64,7 @@
   other-extensions:    FlexibleContexts
   
   -- Other library packages from which modules are imported.
-  build-depends:       base >=4.6 && <4.7, chatty >=0.5.4 && <0.6, antisplice >=0.15 && <0.16, mtl >= 2.1 && < 2.2, transformers >= 0.3 && < 0.4
+  build-depends:       base >=4.6 && <4.7, chatty >=0.5.4 && <0.6, antisplice >=0.16 && <0.17, mtl >= 2.1 && < 2.2, transformers >= 0.3 && < 0.4
   
   -- Directories containing source files.
   -- hs-source-dirs:      
