diff --git a/collocatordb.cc b/collocatordb.cc
index e4520c0..56fc53a 100644
--- a/collocatordb.cc
+++ b/collocatordb.cc
@@ -207,10 +207,10 @@
     uint64_t default_;
 
     std::shared_ptr<DB> OpenDb(const char *dbname);
+    std::shared_ptr<DB> OpenDbForRead(const char *dbname);
 
   public:
-    Collocators(const char *db_name);
-		
+    Collocators(const char *db_name, bool read_only);
     ~Collocators();
 
     // public interface of Collocators.
@@ -314,10 +314,12 @@
     CollocatorIterator* SeekIterator(uint64_t w1, uint64_t w2, int8_t dist);
   };
 
-  rocksdb::Collocators::Collocators(const char *db_name) {
-    std::cout << "Test merge-based counters... " << db_name << "\n";
+  rocksdb::Collocators::Collocators(const char *db_name, bool read_only = false) {
 		//		merge_option_.sync = true;
-    db_ = OpenDb(db_name);
+    if(read_only)
+      db_ = OpenDbForRead(db_name);
+    else
+      db_ = OpenDb(db_name);
     assert(db_);
     uint64_t one = 1;
     EncodeFixed64(_one, one);
@@ -336,8 +338,20 @@
     inc(encodeCollocation(w1, w2, dist));
   }
 
+  std::shared_ptr<DB> rocksdb::Collocators::OpenDbForRead(const char *name) {
+		DB* db;
+		Options options;
+    ostringstream dbname;
+    dbname << name << ".rocksdb";
+		auto s = DB::OpenForReadOnly(options, dbname.str(), &db);
+		if (!s.ok()) {
+			std::cerr << s.ToString() << std::endl;
+			assert(false);
+		}
+		return std::shared_ptr<DB>(db);
+  }
+
   std::shared_ptr<DB> rocksdb::Collocators::OpenDb(const char *dbname) {
-		std::cout << "Test merge-based counters... " << dbname << "\n";
 		DB* db;
 		Options options;
 
@@ -526,6 +540,10 @@
 		return new rocksdb::Collocators(dbname);
 	}
 	
+	COLLOCATORS *open_collocators_for_read(char *dbname) {
+		return new rocksdb::Collocators(dbname, true);
+	}
+	
 	void inc_collocators(COLLOCATORS *db, uint32_t w1, uint32_t w2, int8_t dist) {
 		db->inc(w1, w2, dist);
 	}
