diff --git a/libwccl/parser/parsingscope.h b/libwccl/parser/parsingscope.h
index acbf6aea44bdd9795383358d8ba12e516c3f8e7d..9157626cc6af39a3af54f9789d6786005341322b 100644
--- a/libwccl/parser/parsingscope.h
+++ b/libwccl/parser/parsingscope.h
@@ -12,14 +12,14 @@ class ParsingScope
 public:
 	ParsingScope(const Corpus2::Tagset& tagset, const Lexicons& lexicons)
 		: tagset_(tagset),
-		  variables_(),
+		  variables_(new Variables()),
 		  lexicons_(lexicons)
 	{
 	}
 
 	explicit ParsingScope(const WcclFile& file)
 		: tagset_(file.tagset()),
-		  variables_(),
+		  variables_(new Variables()),
 		  lexicons_(file.get_lexicons())
 	{
 	}
@@ -33,11 +33,11 @@ public:
 	}
 
 	Variables& variables() {
-		return variables_;
+		return *variables_;
 	}
 
 	const Variables& variables() const {
-		return variables_;
+		return *variables_;
 	}
 
 	const Lexicons& lexicons() const {
@@ -46,7 +46,7 @@ public:
 
 private:
 	const Corpus2::Tagset& tagset_;
-	Variables variables_;
+	boost::shared_ptr<Variables> variables_;
 	const Lexicons& lexicons_;
 };