diff --git a/phino.cabal b/phino.cabal
--- a/phino.cabal
+++ b/phino.cabal
@@ -1,7 +1,7 @@
 cabal-version:      3.0
 
 name:               phino
-version:            0.0.0.20
+version:            0.0.0.21
 license:            MIT
 synopsis:           Command-Line Manipulator of 𝜑-Calculus Expressions
 description:        Please see the README on GitHub at <https://github.com/objectionary/phino#readme>
diff --git a/src/Condition.hs b/src/Condition.hs
--- a/src/Condition.hs
+++ b/src/Condition.hs
@@ -7,11 +7,14 @@
 
 import Ast
 import Builder (buildAttribute, buildBinding)
+import Control.Exception (SomeException (SomeException), evaluate)
+import Control.Exception.Base (try)
 import Data.Aeson (FromJSON)
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map.Strict as M
 import Functions (buildTermFromFunction)
 import GHC.IO (unsafePerformIO)
+import Logger (logDebug)
 import Matcher
 import Misc (allPathsIn, btsToUnescapedStr)
 import Pretty (prettyExpression, prettySubsts)
@@ -137,10 +140,10 @@
   onTau <- meetCondition' (Y.XI texpr) subst
   pure [subst | not (null onExpr) && not (null onTau)]
 meetCondition' (Y.XI (ExDispatch expr _)) subst = meetCondition' (Y.XI expr) subst
-meetCondition' (Y.Match pat (ExMeta meta)) (Subst mp) = case M.lookup meta mp of
-  Just (MvExpression expr _) -> meetCondition' (Y.Match pat expr) (Subst mp)
+meetCondition' (Y.Matches pat (ExMeta meta)) (Subst mp) = case M.lookup meta mp of
+  Just (MvExpression expr _) -> meetCondition' (Y.Matches pat expr) (Subst mp)
   _ -> pure []
-meetCondition' (Y.Match pat expr) subst = do
+meetCondition' (Y.Matches pat expr) subst = do
   (TeBytes tgt) <- buildTermFromFunction "dataize" [Y.ArgExpression expr] subst (Program expr)
   matched <- match (B.pack pat) (B.pack (btsToUnescapedStr tgt))
   pure [subst | matched]
@@ -151,11 +154,14 @@
 meetCondition :: Y.Condition -> [Subst] -> IO [Subst]
 meetCondition _ [] = pure []
 meetCondition cond (subst : rest) = do
-  first <- meetCondition' cond subst
-  next <- meetCondition cond rest
-  if null first
-    then pure next
-    else pure (head first : next)
+  met <- try (meetCondition' cond subst) :: IO (Either SomeException [Subst])
+  case met of
+    Right first -> do
+      next <- meetCondition cond rest
+      if null first
+        then pure next
+        else pure (head first : next)
+    Left _ -> meetCondition cond rest
 
 -- Returns Just [...] if
 -- 1. program matches pattern and
diff --git a/src/Yaml.hs b/src/Yaml.hs
--- a/src/Yaml.hs
+++ b/src/Yaml.hs
@@ -94,10 +94,10 @@
                     pure (In attr bd)
                   _ -> fail "'in' expects exactly two arguments",
               do
-                vals <- v .: "match"
+                vals <- v .: "matches"
                 case vals of
-                  [pat, exp] -> Match <$> parseJSON pat <*> parseJSON exp
-                  _ -> fail "'match' expects exactly two arguments"
+                  [pat, exp] -> Matches <$> parseJSON pat <*> parseJSON exp
+                  _ -> fail "'matches' expects exactly two arguments"
             ]
       )
 
@@ -142,7 +142,7 @@
   | Eq Comparable Comparable
   | NF Expression
   | XI Expression
-  | Match String Expression
+  | Matches String Expression
   deriving (Generic, Show)
 
 data ExtraArgument
diff --git a/test/ConditionSpec.hs b/test/ConditionSpec.hs
--- a/test/ConditionSpec.hs
+++ b/test/ConditionSpec.hs
@@ -7,17 +7,17 @@
 module ConditionSpec where
 
 import Ast (Expression, Program (Program))
-import Condition (meetCondition)
 import Control.Monad
 import Data.Aeson
 import Data.Yaml qualified as Y
 import GHC.Generics
-import Matcher (matchProgram)
 import Misc
-import Pretty (prettySubsts)
 import System.FilePath
 import Test.Hspec (Spec, describe, expectationFailure, it, runIO)
 import Yaml qualified
+import Matcher
+import Condition
+import Pretty
 
 data ConditionPack = ConditionPack
   { expression :: Expression,
