diff --git a/libcorpus2/io/cclreader.cpp b/libcorpus2/io/cclreader.cpp
index 14d2b993f541b386270d307f3e25227f0e56a432..eadd580e7dac8c36dd7b7bff4203f96548d90de2 100644
--- a/libcorpus2/io/cclreader.cpp
+++ b/libcorpus2/io/cclreader.cpp
@@ -220,7 +220,7 @@ void CclReader::set_option(const std::string& option)
 	}
 }
 
-std::string CclReader::get_option(const std::string& option)
+std::string CclReader::get_option(const std::string& option) const
 {
 	if (option == "disamb_only") {
 		return impl_->get_disamb_only() ? option : "";
diff --git a/libcorpus2/io/cclreader.h b/libcorpus2/io/cclreader.h
index 8909c4d8c2f282d4ceddff6d7c291aa22f13bb49..067957bff25d294e87f42100e382b9c8214c2805 100644
--- a/libcorpus2/io/cclreader.h
+++ b/libcorpus2/io/cclreader.h
@@ -44,7 +44,7 @@ public:
 
 	void set_option(const std::string& option);
 
-	std::string get_option(const std::string& option);
+	std::string get_option(const std::string& option) const;
 
 	static bool registered;
 
diff --git a/libcorpus2/io/fastxces.cpp b/libcorpus2/io/fastxces.cpp
index 0d52af9a37574294e16c3448c7fbefee7c367455..25d4a8c74097cbc128fb9c0d40caf757007b26be 100644
--- a/libcorpus2/io/fastxces.cpp
+++ b/libcorpus2/io/fastxces.cpp
@@ -164,7 +164,7 @@ void FastXcesReader::set_option(const std::string& /*option*/)
 {
 }
 
-std::string FastXcesReader::get_option(const std::string& option)
+std::string FastXcesReader::get_option(const std::string& option) const
 {
 	return BufferedChunkReader::get_option(option);
 }
diff --git a/libcorpus2/io/fastxces.h b/libcorpus2/io/fastxces.h
index 876bdadf79aeb32d58f2e394dd1d1d6a42bdf57c..365ad09ddef7871d020d2373b1a25f340cf22d88 100644
--- a/libcorpus2/io/fastxces.h
+++ b/libcorpus2/io/fastxces.h
@@ -26,7 +26,7 @@ public:
 
 	void set_option(const std::string& option);
 
-	std::string get_option(const std::string& option);
+	std::string get_option(const std::string& option) const;
 
 	static bool registered;
 
diff --git a/libcorpus2/io/reader.cpp b/libcorpus2/io/reader.cpp
index 837b78ae7df8c93371f0ad8f0314a3e44ed94406..0c75d9a29f9473a4f864bce0ad4c38787326ddb0 100644
--- a/libcorpus2/io/reader.cpp
+++ b/libcorpus2/io/reader.cpp
@@ -46,7 +46,7 @@ void TokenReader::set_option(const std::string &option)
 	}
 }
 
-std::string TokenReader::get_option(const std::string &option)
+std::string TokenReader::get_option(const std::string &option) const
 {
 	if (option == "ign") {
 		return tag_parse_mode_ & Tagset::ParseFailWithIgn ? option : "";
diff --git a/libcorpus2/io/reader.h b/libcorpus2/io/reader.h
index ee4dc271491d62e7a80fad2e2e204833b9105f43..b0b3a8bcc70b440ba5bc3f9a16638674ac78d000 100644
--- a/libcorpus2/io/reader.h
+++ b/libcorpus2/io/reader.h
@@ -97,7 +97,7 @@ public:
 	 * Option inspector. Should echo the option if it is set, return
 	 * an empty string otheriwse, and "unknown" if the option is invalid.
 	 */
-	virtual std::string get_option(const std::string& option);
+	virtual std::string get_option(const std::string& option) const;
 
 	/**
 	 * Tagset accesor
@@ -291,6 +291,14 @@ public:
 
 	boost::shared_ptr<Chunk> get_next_chunk();
 
+	void set_option(const std::string& option) {
+		TokenReader::set_option(option);
+	}
+
+	std::string get_option(const std::string& option) const {
+		return TokenReader::get_option(option);
+	}
+
 protected:
 	virtual void ensure_more() = 0;
 
@@ -320,6 +328,14 @@ public:
 
 	boost::shared_ptr<Chunk> get_next_chunk();
 
+	void set_option(const std::string& option) {
+		TokenReader::set_option(option);
+	}
+
+	std::string get_option(const std::string& option) const {
+		return TokenReader::get_option(option);
+	}
+
 protected:
 	virtual Sentence::Ptr actual_next_sentence() = 0;
 
diff --git a/libcorpus2/io/rft.cpp b/libcorpus2/io/rft.cpp
index 5918b118ecf93c58158529612286f1c9c8d94cab..26ae24f6ef83a297f23752da40673bfd9b069b4e 100644
--- a/libcorpus2/io/rft.cpp
+++ b/libcorpus2/io/rft.cpp
@@ -152,7 +152,7 @@ void RftReader::set_option(const std::string &option)
 	}
 }
 
-std::string RftReader::get_option(const std::string &option)
+std::string RftReader::get_option(const std::string &option) const
 {
 	if (option == "mbt") {
 		return mbt_dialect_ ? option : "";
diff --git a/libcorpus2/io/rft.h b/libcorpus2/io/rft.h
index 7ae19a299dd7dbdaf200c2ce82ffdfe5c5362f9c..ba8c4296a4938b6fe09f2a10df9c106985a00484 100644
--- a/libcorpus2/io/rft.h
+++ b/libcorpus2/io/rft.h
@@ -68,7 +68,7 @@ public:
 
 	void set_option(const std::string& option);
 
-	std::string get_option(const std::string& option);
+	std::string get_option(const std::string& option) const;
 
 	static bool registered;
 
diff --git a/libcorpus2/io/xcesreader.cpp b/libcorpus2/io/xcesreader.cpp
index 9378fcdbd626f241fe8b5c690474c364da62420e..bf14d9dc0080a6bc1a0f2a691d834169a0c7a9d1 100644
--- a/libcorpus2/io/xcesreader.cpp
+++ b/libcorpus2/io/xcesreader.cpp
@@ -105,7 +105,7 @@ void XcesReader::set_option(const std::string& option)
 	}
 }
 
-std::string XcesReader::get_option(const std::string& option)
+std::string XcesReader::get_option(const std::string& option) const
 {
 	if (option == "sh") {
 		return impl_->get_disamb_sh() ? option : "";
diff --git a/libcorpus2/io/xcesreader.h b/libcorpus2/io/xcesreader.h
index 56c11f1f1f08a88e1f1b680a3cc05551c758ba00..f1a2253d42402c6f6d08f6f3ae32d5189809947b 100644
--- a/libcorpus2/io/xcesreader.h
+++ b/libcorpus2/io/xcesreader.h
@@ -44,7 +44,7 @@ public:
 
 	void set_option(const std::string& option);
 
-	std::string get_option(const std::string& option);
+	std::string get_option(const std::string& option) const;
 
 	static bool registered;