diff --git a/swig/parsedexpression.i b/swig/parsedexpression.i
index a77f1f351dfb21263366a5e7e794a14731660543..fdaa42c47399f14e4185c9d6f8385101522767fd 100644
--- a/swig/parsedexpression.i
+++ b/swig/parsedexpression.i
@@ -66,8 +66,25 @@ namespace Wccl {
     explicit ParsedExpression(const Variables& variables);
     virtual ParsedExpression* clone_internal() const = 0;
   };
-}
 
+%extend ParsedExpression {
+    void set_bool(const std::string& name, const boost::shared_ptr<const Wccl::Bool>& b) {
+        self->set<Wccl::Bool>(name, *b);
+    }
+    void set_tset(const std::string& name, const boost::shared_ptr<const Wccl::TSet>& b) {
+        self->set<Wccl::TSet>(name, *b);
+    }
+    void set_strset(const std::string& name, const boost::shared_ptr<const Wccl::StrSet>& b) {
+        self->set<Wccl::StrSet>(name, *b);
+    }
+    void set_position(const std::string& name, const boost::shared_ptr<const Wccl::Position>& b) {
+        self->set<Wccl::Position>(name, *b);
+    }
+    void set_match(const std::string& name, const boost::shared_ptr<const Wccl::Match>& b) {
+        self->set<Wccl::Match>(name, *b);
+    }
+}
+}
 using namespace std;
 using namespace Wccl;