diff --git a/swig/libccllexicon.i b/swig/libccllexicon.i
index 69cc3240af27e9aacfb7303fa37c8b0e7d1611fa..c49dd7988bd98be4ae8bc66b1a55e4e279b6a5b4 100644
--- a/swig/libccllexicon.i
+++ b/swig/libccllexicon.i
@@ -60,6 +60,9 @@ namespace Wccl {
 
     const map_t& map() const;
   };
+
+  %template(LexiconPtr) boost::shared_ptr<Wccl::Lexicon>;
+  %template(ConstLexiconPtr) boost::shared_ptr<const Wccl::Lexicon>;
 }
 
 using namespace boost;
diff --git a/swig/libccllexicons.i b/swig/libccllexicons.i
index a25137943d6119590c2f6489a1ede13572b0ce65..476a79007378a44199750fd9368c498aae2f8e2f 100644
--- a/swig/libccllexicons.i
+++ b/swig/libccllexicons.i
@@ -39,6 +39,9 @@ namespace Wccl {
 
     const map_t& get_lexicons() const;
   };
+
+  %template(LexiconsPtr) boost::shared_ptr<Wccl::Lexicons>;
+  %template(ConstLexiconsPtr) boost::shared_ptr<const Wccl::Lexicons>;
 }
 
 using namespace boost;
diff --git a/swig/libcclmatchrulesequence.i b/swig/libcclmatchrulesequence.i
index 590bd907df27b48518fa7a5bde173691b3d52d0f..eca44e3987e43b0b599eb1956f77313af2e4c7a6 100644
--- a/swig/libcclmatchrulesequence.i
+++ b/swig/libcclmatchrulesequence.i
@@ -14,7 +14,9 @@
 %include "std_vector.i"
 %include "boost_shared_ptr.i"
 
-%template(MatchRuleVector) std::vector<MatchRule>;
+%template(MatchRuleVector) std::vector<Wccl::MatchRule>;
+%template(MatchRuleSequencePtr) boost::shared_ptr<Wccl::MatchRule>;
+%template(ConstMatchRuleSequencePtr) boost::shared_ptr<const Wccl::MatchRule>;
 
 namespace Wccl {
   class MatchRuleSequence : public std::vector<MatchRule>, public Expression {
diff --git a/swig/libccltagrulesequence.i b/swig/libccltagrulesequence.i
index f85f04f721dfb713c4eac05425171b25653648ed..75aa8d827509f8329a01c0f0179a2c5884f9aa46 100644
--- a/swig/libccltagrulesequence.i
+++ b/swig/libccltagrulesequence.i
@@ -17,6 +17,7 @@
 
 %template(StdVectorTagRule) std::vector<TagRule>;
 %template(TagRuleSequencPtr) boost::shared_ptr<Wccl::TagRuleSequence>;
+%template(ConstTagRuleSequencPtr) boost::shared_ptr<const Wccl::TagRuleSequence>;
 
 namespace Wccl {
   class TagRuleSequence : public std::vector<TagRule>, public Expression {
diff --git a/swig/libcclwcclfile.i b/swig/libcclwcclfile.i
index 81dda6a08462f88622e372e96866c2a00333203f..6311ed8769948ad6a6cd2d5ad98b64096f404c62 100644
--- a/swig/libcclwcclfile.i
+++ b/swig/libcclwcclfile.i
@@ -34,7 +34,7 @@
 
 %nodefaultctor Wccl::WcclFile;
 
-%template(OpSequenceStrSet) Wccl::WcclFileOpSections<Wccl::OpSequence<Wccl::StrSet> >;
+%template(WcclFilePtr) boost::shared_ptr<Wccl::WcclFile>;
 
 namespace Wccl {
   class WcclFile 
@@ -147,8 +147,8 @@ namespace Wccl {
 
     /* --------------------------------------------------------------------- */
 
+    // UntypedOpSequence::name_op_v_c_t gen_name_untyped_op_pairs() const;
     UntypedOpSequence::name_op_v_t gen_name_untyped_op_pairs();
-    UntypedOpSequence::name_op_v_c_t gen_name_untyped_op_pairs() const;
 
     /* --------------------------------------------------------------------- */
 
@@ -240,9 +240,7 @@ namespace Wccl {
     %template(add_section_position) add_section<Position>;
     %template(add_section_match) add_section<Match>;
 
-    /*
-    void import_lexicon(const boost::shared_ptr<Lexicon>& lexicon);
-    */
+    void import_lexicon(const shared_ptr<Lexicon>& lexicon);
 
     /*
     void set_tag_rules(const shared_ptr<TagRuleSequence>& tag_rules);
diff --git a/swig/libcclwcclfileopsections.i b/swig/libcclwcclfileopsections.i
index f5ca97642e8f8c51413fadbfe0af88ea86450410..8e8ee40d69a0e46fff1c41ddc9ed019377ec11cd 100644
--- a/swig/libcclwcclfileopsections.i
+++ b/swig/libcclwcclfileopsections.i
@@ -80,6 +80,8 @@ namespace Wccl {
   %template(BoolOpSequence) WcclFileOpSections<OpSequence<Bool> >;
   %template(PositionOpSequence) WcclFileOpSections<OpSequence<Position> >;
   %template(MatchOpSequence) WcclFileOpSections<OpSequence<Match> >;
+
+  %template(OpSequenceStrSet) Wccl::WcclFileOpSections<Wccl::OpSequence<Wccl::StrSet> >;
 }
 
 using namespace std;