diff --git a/swig/libcclmatchdata.i b/swig/libcclmatchdata.i
index a39b2be634b61aa59e10e6c02a581c82dd048071..e250ff2d0d4cb2b03ff4b276988c27d97c197c86 100644
--- a/swig/libcclmatchdata.i
+++ b/swig/libcclmatchdata.i
@@ -6,35 +6,43 @@
   #include <libwccl/values/matchdata.h>
 %}
 
-%include "boost_shared_ptr.i"
+
 %include "libcclmatch.i"
-%include "libcclposition.i"
 %include "libcorpus/libcorpusannotatedsentence.i"
 
+%include "std_string.i"
+%include "boost_shared_ptr.i"
+
+%nodefaultctor Wccl::MatchData;
+
 %template(MatchDataPtr) boost::shared_ptr<Wccl::MatchData>;
 
 namespace Wccl {
   class MatchData {
   public:
-    ~MatchData();
+    virtual bool empty() const = 0;
 
     /* --------------------------------------------------------------------- */
 
-    virtual bool empty() const = 0;
-    virtual Position first_token(const boost::shared_ptr<Corpus2::AnnotatedSentence>&) const = 0;
-    virtual Position last_token(const boost::shared_ptr<Corpus2::AnnotatedSentence>&) const = 0;
+    virtual int first_token(const boost::shared_ptr<Corpus2::AnnotatedSentence>&) const = 0;
+    virtual int last_token(const boost::shared_ptr<Corpus2::AnnotatedSentence>&) const = 0;
 
     /* --------------------------------------------------------------------- */
 
+    // virtual const boost::shared_ptr<const Match> submatch(size_t) const;
     virtual const boost::shared_ptr<Match>& submatch(size_t);
 
     /* --------------------------------------------------------------------- */
 
     boost::shared_ptr<MatchData> clone() const;
+    
+    /* --------------------------------------------------------------------- */
+    
+    virtual std::string to_raw_string() const = 0;
 
     /* --------------------------------------------------------------------- */
 
-    virtual std::string to_raw_string() const = 0;
+    virtual ~MatchData() {}
   };
 }