diff --git a/libwccl/ops/matchrule.cpp b/libwccl/ops/matchrule.cpp
index cc2d3af9b35d943bafde03029b9ef9ee8158252c..cb4b8b3ad0e605a1197b5b17191b1083cca784ea 100644
--- a/libwccl/ops/matchrule.cpp
+++ b/libwccl/ops/matchrule.cpp
@@ -17,7 +17,9 @@ void MatchRule::apply(const boost::shared_ptr<Corpus2::AnnotatedSentence>& s)
 	if (!apply_) {
 		return; // no-op (default) version
 	}
-	apply_->execute(ActionExecContext(SentenceContext(s), variables_));
+	SentenceContext sc(s);
+	ActionExecContext aec(sc, variables_);
+	apply_->execute(aec);
 }
 
 std::string MatchRule::to_string(const Corpus2::Tagset &tagset) const