diff --git a/libwccl/CMakeLists.txt b/libwccl/CMakeLists.txt
index 662d94d5bdb1c125433b1b425db3824a48f24477..3958d8b7d5ca9d1244307c941635db74cdc8e541 100644
--- a/libwccl/CMakeLists.txt
+++ b/libwccl/CMakeLists.txt
@@ -43,7 +43,6 @@ SET(libwccl_STAT_SRC
 	sentencecontext.cpp
 	values/bool.cpp
 	values/position.cpp
-	values/positionref.cpp
 	values/strset.cpp
 	values/tset.cpp
 	values/value.cpp
diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g
index 9af1b3db183600d9da86df2a51504ae56c17b327..c4770a0d282ec31551de0fc72da14d5d1acd77dd 100644
--- a/libwccl/parser/grammar.g
+++ b/libwccl/parser/grammar.g
@@ -11,7 +11,6 @@ header {
 	#include <libwccl/values/tset.h>
 	#include <libwccl/values/strset.h>
 	#include <libwccl/values/position.h>
-	#include <libwccl/values/positionref.h>
 	
 	// sentence context
 	#include <libwccl/sentencecontext.h>
diff --git a/libwccl/sentencecontext.cpp b/libwccl/sentencecontext.cpp
index 68f9c6dad53fa4761f78109a76524161c50b590d..def13b52730ac221a8c18a20228305f374dcd131 100644
--- a/libwccl/sentencecontext.cpp
+++ b/libwccl/sentencecontext.cpp
@@ -24,20 +24,9 @@ int SentenceContext::get_abs_position(const Position &position) const
 	return translate_special_position(position.get_value());
 }
 
-int SentenceContext::get_abs_position(const PositionRef &position) const
-{
-	int p = translate_special_position(position.get_base()->get_value());
-	return p + position.get_offset();
-}
-
 int SentenceContext::get_rel_position(const Position &position) const
 {
 	return get_abs_position(position) - position_;
 }
 
-int SentenceContext::get_rel_position(const PositionRef &position) const
-{
-	return get_abs_position(position) - position_;
-}
-
 } /* end ns Wccl */
diff --git a/libwccl/sentencecontext.h b/libwccl/sentencecontext.h
index db837963ac6ae6b75c04c4b8037ea155bff1f2ff..fc69166557eef345fb3aae2ad5643c9daed9ebb7 100644
--- a/libwccl/sentencecontext.h
+++ b/libwccl/sentencecontext.h
@@ -2,7 +2,7 @@
 #define LIBWCCL_SENTENCECONTEXT_H
 
 #include <libcorpus2/sentence.h>
-#include <libwccl/values/positionref.h>
+#include <libwccl/values/position.h>
 #include <boost/shared_ptr.hpp>
 
 namespace Wccl {
@@ -104,12 +104,8 @@ public:
 
 	int get_abs_position(const Position& position) const;
 
-	int get_abs_position(const PositionRef& position) const;
-
 	int get_rel_position(const Position& position) const;
 
-	int get_rel_position(const PositionRef& position) const;
-
 	int translate_special_position(int pos) const {
 		switch (pos) {
 		case Position::Begin:
diff --git a/libwccl/values/positionref.cpp b/libwccl/values/positionref.cpp
deleted file mode 100644
index f0c24c01fcd899a56211e82bc6fed88db9d8c36c..0000000000000000000000000000000000000000
--- a/libwccl/values/positionref.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-#include <libwccl/values/positionref.h>
-#include <sstream>
-
-namespace Wccl {
-
-
-std::string PositionRef::to_raw_string() const
-{
-	std::stringstream ss;
-	ss << base_->get_value();
-	if (offset_ >=0) {
-		ss << "+";
-	}
-	ss << offset_;
-	return ss.str();
-}
-
-} /* end ns Wccl */
diff --git a/libwccl/values/positionref.h b/libwccl/values/positionref.h
deleted file mode 100644
index 30de6cc8073675410877f09163211350282b0218..0000000000000000000000000000000000000000
--- a/libwccl/values/positionref.h
+++ /dev/null
@@ -1,70 +0,0 @@
-#ifndef LIBWCCL_VALUES_POSITIONREF_H
-#define LIBWCCL_VALUES_POSITIONREF_H
-
-#include <libwccl/values/position.h>
-#include <boost/make_shared.hpp>
-
-namespace Wccl {
-
-class PositionRef
-{
-public:
-
-	explicit PositionRef(const boost::shared_ptr<Position>& base,
-			int offset = 0)
-		: base_(base), offset_(offset)
-	{
-		assert(base_);
-	}
-
-	explicit PositionRef(int base, int offset = 0)
-		: base_(boost::make_shared<Position>(base)), offset_(offset)
-	{
-	}
-
-	std::string to_raw_string() const;
-
-	const boost::shared_ptr<Position>& get_base() const {
-		return base_;
-	}
-
-	int get_offset() const {
-		return offset_;
-	}
-
-	void set_offset(int offset) {
-		offset_ = offset;
-	}
-
-	/**
-	 * Returns true if underlying Position is Nowhere,
-	 * or underlying Position is Begin and offset is less than zero,
-	 * or underlying Position is End and offset is greater than zero.
-	 * False otherwise.
-	 * This function does not take into account any actual sentence
-	 * boundaries.
-	 */
-	bool points_nowhere() const {
-		//We probably could allow null dereference (shouldn't logically
-		//happen so if it does, it's bad) but let's be defensive
-		//and assume null base is like nowhere.
-		return (base_.get() == NULL) ||
-				(base_->get_value() == Position::Nowhere) ||
-				(base_->get_value() == Position::Begin && offset_ < 0) ||
-				(base_->get_value() == Position::End && offset_ > 0);
-	}
-
-	bool equals(const PositionRef& other) const {
-		return points_nowhere() ? other.points_nowhere()
-			: offset_ == other.offset_ && base_->equals(*other.base_);
-	}
-
-private:
-	boost::shared_ptr<Position> base_;
-
-	int offset_;
-};
-
-} /* end ns Wccl */
-
-#endif // LIBWCCL_VALUES_POSITIONREF_H
diff --git a/libwccl/variables.h b/libwccl/variables.h
index f6024dc2516bb04ae79ae28c62e27c3d58b683d1..917515d8745924b776fc3f19bdd46374299e2b59 100644
--- a/libwccl/variables.h
+++ b/libwccl/variables.h
@@ -4,7 +4,6 @@
 #include <libwccl/values/bool.h>
 #include <libwccl/exception.h>
 #include <libwccl/values/position.h>
-#include <libwccl/values/positionref.h>
 #include <libwccl/values/strset.h>
 #include <libwccl/values/tset.h>
 #include <iostream>
diff --git a/tests/context.cpp b/tests/context.cpp
index 9c15a817405cae7189d5ae17452ed47c8f86f156..4359dc678d8b21314475bc63e2560a5bd93b9d73 100644
--- a/tests/context.cpp
+++ b/tests/context.cpp
@@ -138,89 +138,5 @@ BOOST_FIXTURE_TEST_CASE(pos_no, Fpos)
 }
 
 
-BOOST_FIXTURE_TEST_CASE(posref0, Fpos)
-{
-	PositionRef p(0, 1);
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 1);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 2);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 1);
-	sc.advance();
-	BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p)));
-}
-
-BOOST_FIXTURE_TEST_CASE(posref1m1, Fpos)
-{
-	PositionRef p(1, -1);
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 0);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 2);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0);
-	sc.advance();
-	BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p)));
-}
-
-BOOST_FIXTURE_TEST_CASE(posref1_1, Fpos)
-{
-	PositionRef p(-1, 1);
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 0);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 2);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0);
-	sc.advance();
-	BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p)));
-}
-
-BOOST_FIXTURE_TEST_CASE(posref_begin, Fpos)
-{
-	PositionRef p(Position::Begin, 1);
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 1);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), -1);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), -2);
-}
-
-BOOST_FIXTURE_TEST_CASE(posref_end, Fpos)
-{
-	PositionRef p(Position::End, -1);
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 1);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), -1);
-	sc.advance();
-	BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1);
-	BOOST_CHECK_EQUAL(sc.get_rel_position(p), -2);
-}
-
-BOOST_FIXTURE_TEST_CASE(posref_no, Fpos)
-{
-	PositionRef p(Position::Nowhere, 1);
-	BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p)));
-	sc.advance();
-	BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p)));
-	sc.advance();
-	BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p)));
-}
-
 BOOST_AUTO_TEST_SUITE_END()