diff --git a/swig/bool.i b/swig/bool.i
index 7f4ff3a8e88ef94888f4ba13f692fb67bbbf6fe2..9091fcda952d3434180596a7a9531cc9b0d273ea 100644
--- a/swig/bool.i
+++ b/swig/bool.i
@@ -12,6 +12,9 @@
 
 %feature("notabstract") Wccl::Bool;
 
+%template(BoolPtr) boost::shared_ptr<Wccl::Bool>;
+%template(ConstBoolPtr) boost::shared_ptr<Wccl::Bool const>;
+
 namespace Wccl {
   class Bool : public Value {
   public:
diff --git a/swig/functionaloperator.i b/swig/functionaloperator.i
index 9ae78cf821ed1e11e8cc5bf7a8f9dbc03684d340..7058cc7753cf94cf839f43c2fde529a1e88f8b2a 100644
--- a/swig/functionaloperator.i
+++ b/swig/functionaloperator.i
@@ -14,9 +14,9 @@
 %include "std_string.i"
 %include <libcorpus2/boost_shared_ptr.i>
 
-// %template(ValuePtr) boost::shared_ptr<Wccl::Value>;
 %template(FunctionalOperatorPtr) boost::shared_ptr<Wccl::FunctionalOperator>;
 
+
 namespace Wccl {
   class FunctionalOperator : public ParsedExpression {
   public:
diff --git a/swig/match.i b/swig/match.i
index f296bb3d54b478410832efaf10e72ab3eee4efb9..f492c02e9212a04e5bcd9c9ebfe416f36073e330 100644
--- a/swig/match.i
+++ b/swig/match.i
@@ -18,7 +18,8 @@
 
 %feature("notabstract") Wccl::Match;
 
-// %template (MatchPtr) boost::shared_ptr<Wccl::Match>;
+%template(MatchPtr) boost::shared_ptr<Wccl::Match>;
+%template(ConstMatchPtr) boost::shared_ptr<Wccl::Match const>;
 
 namespace Wccl {
   class Match : public Value {
diff --git a/swig/position.i b/swig/position.i
index c5d1698af84329764eae266b01e41f0423ae5f25..9379bc8fcb2163c660aa45e7b33595238d6b98af 100644
--- a/swig/position.i
+++ b/swig/position.i
@@ -13,6 +13,9 @@
 
 %feature("notabstract") Wccl::Position;
 
+%template(PositionPtr) boost::shared_ptr<Wccl::Position>;
+%template(ConstPositionPtr) boost::shared_ptr<Wccl::Position const>;
+
 namespace Wccl {
   class Position : public Value {
   public:
diff --git a/swig/strset.i b/swig/strset.i
index b97243db7ca166d4bd7b69e96e7acc00305115cb..d494f4e8ad182fca6fb1459e79b2a460b5bc9d4f 100644
--- a/swig/strset.i
+++ b/swig/strset.i
@@ -15,6 +15,9 @@
 
 %feature("notabstract") Wccl::StrSet;
 
+%template(StrSetPtr) boost::shared_ptr<Wccl::StrSet>;
+%template(ConstStrSetPtr) boost::shared_ptr<Wccl::StrSet const>;
+
 %template(UnicodeStringMap) std::set<UnicodeString>;
 
 namespace Wccl {
diff --git a/swig/tset.i b/swig/tset.i
index 54a7880c14000001d30dd1e660a0d0b665e42384..a8285f0eb304f2c3f7f162eb345065cd4689be8e 100644
--- a/swig/tset.i
+++ b/swig/tset.i
@@ -15,6 +15,9 @@
 
 %feature("notabstract") Wccl::TSet;
 
+%template(TSetPtr) boost::shared_ptr<Wccl::TSet>;
+%template(ConstTSetPtr) boost::shared_ptr<Wccl::TSet const>;
+
 namespace Wccl {
   class TSet : public Value {
   public:
diff --git a/swig/value.i b/swig/value.i
index 671c3c981ff1da336aa3b19064e6ab0cadb67f11..bc49be07dffb74589b197c6694539285b7b712e9 100644
--- a/swig/value.i
+++ b/swig/value.i
@@ -11,6 +11,9 @@
 
 %nodefaultctor Wccl::Value;
 
+%template(ValuePtr) boost::shared_ptr<Wccl::Value>;
+%template(ConstValuePtr) boost::shared_ptr<Wccl::Value const>;
+
 namespace Wccl {
   class Value {
   public:
diff --git a/swig/variables.i b/swig/variables.i
index 00eb421d3b8b257d38d40f8846d8d4574f2db088..6ad0e6ee0698e86abea863540d5aad21463db120 100644
--- a/swig/variables.i
+++ b/swig/variables.i
@@ -16,19 +16,8 @@
 %include "std_string.i"
 %include <libcorpus2/boost_shared_ptr.i>
 
-%template(ValuePtr) boost::shared_ptr<Wccl::Value>;
-%template(BoolPtr) boost::shared_ptr<Wccl::Bool>;
-%template(PositionPtr) boost::shared_ptr<Wccl::Position>;
-%template(StrSetPtr) boost::shared_ptr<Wccl::StrSet>;
-%template(TSetPtr) boost::shared_ptr<Wccl::TSet>;
-%template(MatchPtr) boost::shared_ptr<Wccl::Match>;
+
 %template(VariablesPtr) boost::shared_ptr<Wccl::Variables>;
-%template(ConstValuePtr) boost::shared_ptr<Wccl::Value const>;
-%template(ConstBoolPtr) boost::shared_ptr<Wccl::Bool const>;
-%template(ConstPositionPtr) boost::shared_ptr<Wccl::Position const>;
-%template(ConstStrSetPtr) boost::shared_ptr<Wccl::StrSet const>;
-%template(ConstTSetPtr) boost::shared_ptr<Wccl::TSet const>;
-%template(ConstMatchPtr) boost::shared_ptr<Wccl::Match const>;
 %template(ConstVariablesPtr) boost::shared_ptr<Wccl::Variables const>;
 
 namespace Wccl {