diff --git a/cpp/src/retriever.cc b/cpp/src/retriever.cc
index 8fa76b7..bdb8145 100644
--- a/cpp/src/retriever.cc
+++ b/cpp/src/retriever.cc
@@ -95,8 +95,8 @@
   const LookupKeyUtil& lookup_key_util_;
   const Downloader& downloader_;
   ValidatingStorage* storage_;
-  scoped_ptr<Downloader::Callback> downloaded_;
-  scoped_ptr<Storage::Callback> validated_data_ready_;
+  const scoped_ptr<const Downloader::Callback> downloaded_;
+  const scoped_ptr<const Storage::Callback> validated_data_ready_;
   std::string stale_data_;
 
   DISALLOW_COPY_AND_ASSIGN(Helper);
diff --git a/cpp/src/retriever.h b/cpp/src/retriever.h
index 17d17ec..9634935 100644
--- a/cpp/src/retriever.h
+++ b/cpp/src/retriever.h
@@ -37,8 +37,8 @@
 //    Downloader* downloader = ...;
 //    Retriever retriever("https://i18napis.appspot.com/ssl-address/",
 //                        downloader, storage);
-//    scoped_ptr<Retriever::Callback> retrieved(BuildCallback(
-//        this, &MyClass::OnDataRetrieved));
+//    const scoped_ptr<const Retriever::Callback> retrieved(
+//        BuildCallback(this, &MyClass::OnDataRetrieved));
 //    retriever.Retrieve("data/CA/AB--fr", *retrieved);
 class Retriever {
  public:
diff --git a/cpp/src/rule_retriever.cc b/cpp/src/rule_retriever.cc
index a77c93a..f0ed848 100644
--- a/cpp/src/rule_retriever.cc
+++ b/cpp/src/rule_retriever.cc
@@ -57,7 +57,7 @@
   }
 
   const RuleRetriever::Callback& rule_ready_;
-  scoped_ptr<Retriever::Callback> data_retrieved_;
+  const scoped_ptr<const Retriever::Callback> data_retrieved_;
 
   DISALLOW_COPY_AND_ASSIGN(Helper);
 };
diff --git a/cpp/src/rule_retriever.h b/cpp/src/rule_retriever.h
index ba3b4c7..ae4b5ee 100644
--- a/cpp/src/rule_retriever.h
+++ b/cpp/src/rule_retriever.h
@@ -32,8 +32,8 @@
 // Retrieves validation rules. Sample usage:
 //    const Retriever* retriever = ...
 //    RuleRetriever rules(retriever);
-//    scoped_ptr<RuleRetriever::Callback> rule_ready(BuildCallback(
-//        this, &MyClass::OnRuleReady));
+//    const scoped_ptr<const RuleRetriever::Callback> rule_ready(
+//        BuildCallback(this, &MyClass::OnRuleReady));
 //    rules.RetrieveRule("data/CA/AB--fr", *rule_ready);
 class RuleRetriever {
  public:
diff --git a/cpp/src/validating_storage.cc b/cpp/src/validating_storage.cc
index d809bcc..a504db4 100644
--- a/cpp/src/validating_storage.cc
+++ b/cpp/src/validating_storage.cc
@@ -68,7 +68,7 @@
   }
 
   const Storage::Callback& data_ready_;
-  scoped_ptr<Storage::Callback> wrapped_data_ready_;
+  const scoped_ptr<const Storage::Callback> wrapped_data_ready_;
 
   DISALLOW_COPY_AND_ASSIGN(Helper);
 };
diff --git a/cpp/src/validating_storage.h b/cpp/src/validating_storage.h
index 11e74cd..1cf3f95 100644
--- a/cpp/src/validating_storage.h
+++ b/cpp/src/validating_storage.h
@@ -32,8 +32,8 @@
 //    scoped_ptr<Storage> file_storage = ...;
 //    ValidatingStorage storage(file_storage));
 //    storage.Put("key", new std::string("data"));
-//    scoped_ptr<ValidatingStorage::Callback> data_ready(BuildCallback(
-//        this, &MyClass::OnDataReady));
+//    const scoped_ptr<const ValidatingStorage::Callback> data_ready(
+//        BuildCallback(this, &MyClass::OnDataReady));
 //    storage.Get("key", *data_ready);
 class ValidatingStorage : public Storage {
  public:
diff --git a/cpp/test/fake_downloader.h b/cpp/test/fake_downloader.h
index 111ce7a..565263b 100644
--- a/cpp/test/fake_downloader.h
+++ b/cpp/test/fake_downloader.h
@@ -47,7 +47,7 @@
 //      }
 //
 //      FakeDownloader downloader_;
-//      scoped_ptr<Downloader::Callback> callback_;
+//      const scoped_ptr<const Downloader::Callback> callback_;
 //
 //      DISALLOW_COPY_AND_ASSIGN(MyClass);
 //    };
diff --git a/cpp/test/fake_downloader_test.cc b/cpp/test/fake_downloader_test.cc
index 6468277..2d9825f 100644
--- a/cpp/test/fake_downloader_test.cc
+++ b/cpp/test/fake_downloader_test.cc
@@ -95,7 +95,7 @@
 TEST_P(FakeDownloaderTest, FakeDownloaderHasValidDataForRegion) {
   std::string key = "data/" + GetParam();
   std::string url = std::string(FakeDownloader::kFakeDataUrl) + key;
-  scoped_ptr<Downloader::Callback> callback(BuildCallback());
+  const scoped_ptr<const Downloader::Callback> callback(BuildCallback());
   downloader_.Download(url, *callback);
 
   EXPECT_TRUE(success_);
@@ -136,7 +136,7 @@
 TEST_P(FakeDownloaderTest, FakeDownloaderHasValidAggregatedDataForRegion) {
   std::string key = "data/" + GetParam();
   std::string url = std::string(FakeDownloader::kFakeAggregateDataUrl) + key;
-  scoped_ptr<Downloader::Callback> callback(BuildCallback());
+  const scoped_ptr<const Downloader::Callback> callback(BuildCallback());
   downloader_.Download(url, *callback);
 
   EXPECT_TRUE(success_);
@@ -154,7 +154,7 @@
   static const std::string kKey = "data";
   static const std::string kUrl =
       std::string(FakeDownloader::kFakeDataUrl) + kKey;
-  scoped_ptr<Downloader::Callback> callback(BuildCallback());
+  const scoped_ptr<const Downloader::Callback> callback(BuildCallback());
   downloader_.Download(kUrl, *callback);
 
   EXPECT_TRUE(success_);
@@ -166,7 +166,7 @@
 TEST_F(FakeDownloaderTest, DownloadMissingKeyReturnsEmptyDictionary) {
   static const std::string kJunkUrl =
       std::string(FakeDownloader::kFakeDataUrl) + "junk";
-  scoped_ptr<Downloader::Callback> callback(BuildCallback());
+  const scoped_ptr<const Downloader::Callback> callback(BuildCallback());
   downloader_.Download(kJunkUrl, *callback);
 
   EXPECT_TRUE(success_);
@@ -178,7 +178,7 @@
 TEST_F(FakeDownloaderTest, AggregateDownloadMissingKeyReturnsEmptyDictionary) {
   static const std::string kJunkUrl =
       std::string(FakeDownloader::kFakeAggregateDataUrl) + "junk";
-  scoped_ptr<Downloader::Callback> callback(BuildCallback());
+  const scoped_ptr<const Downloader::Callback> callback(BuildCallback());
   downloader_.Download(kJunkUrl, *callback);
 
   EXPECT_TRUE(success_);
@@ -189,7 +189,7 @@
 // Verifies that downloading an empty key will return "{}".
 TEST_F(FakeDownloaderTest, DownloadEmptyKeyReturnsEmptyDictionary) {
   static const std::string kPrefixOnlyUrl = FakeDownloader::kFakeDataUrl;
-  scoped_ptr<Downloader::Callback> callback(BuildCallback());
+  const scoped_ptr<const Downloader::Callback> callback(BuildCallback());
   downloader_.Download(kPrefixOnlyUrl, *callback);
 
   EXPECT_TRUE(success_);
@@ -200,7 +200,7 @@
 // Verifies that downloading a real URL fails.
 TEST_F(FakeDownloaderTest, DownloadRealUrlFals) {
   static const std::string kRealUrl = "http://www.google.com/";
-  scoped_ptr<Downloader::Callback> callback(BuildCallback());
+  const scoped_ptr<const Downloader::Callback> callback(BuildCallback());
   downloader_.Download(kRealUrl, *callback);
 
   EXPECT_FALSE(success_);
diff --git a/cpp/test/fake_storage.h b/cpp/test/fake_storage.h
index 5e07cb0..9188b3b 100644
--- a/cpp/test/fake_storage.h
+++ b/cpp/test/fake_storage.h
@@ -51,7 +51,7 @@
 //      }
 //
 //      FakeStorage storage_;
-//      scoped_ptr<Storage::Callback> callback_;
+//      const scoped_ptr<const Storage::Callback> callback_;
 //
 //      DISALLOW_COPY_AND_ASSIGN(MyClass);
 //    };
diff --git a/cpp/test/fake_storage_test.cc b/cpp/test/fake_storage_test.cc
index f950ee4..ec1695d 100644
--- a/cpp/test/fake_storage_test.cc
+++ b/cpp/test/fake_storage_test.cc
@@ -63,7 +63,7 @@
 };
 
 TEST_F(FakeStorageTest, GetWithoutPutReturnsEmptyData) {
-  scoped_ptr<Storage::Callback> callback(BuildCallback());
+  const scoped_ptr<const Storage::Callback> callback(BuildCallback());
   storage_.Get("key", *callback);
 
   EXPECT_FALSE(success_);
@@ -74,7 +74,7 @@
 TEST_F(FakeStorageTest, GetReturnsWhatWasPut) {
   storage_.Put("key", new std::string("value"));
 
-  scoped_ptr<Storage::Callback> callback(BuildCallback());
+  const scoped_ptr<const Storage::Callback> callback(BuildCallback());
   storage_.Get("key", *callback);
 
   EXPECT_TRUE(success_);
@@ -86,7 +86,7 @@
   storage_.Put("key", new std::string("bad-value"));
   storage_.Put("key", new std::string("good-value"));
 
-  scoped_ptr<Storage::Callback> callback(BuildCallback());
+  const scoped_ptr<const Storage::Callback> callback(BuildCallback());
   storage_.Get("key", *callback);
 
   EXPECT_TRUE(success_);
diff --git a/cpp/test/preload_supplier_test.cc b/cpp/test/preload_supplier_test.cc
index 754ff3f..f8e9e23 100644
--- a/cpp/test/preload_supplier_test.cc
+++ b/cpp/test/preload_supplier_test.cc
@@ -51,7 +51,7 @@
   virtual ~PreloadSupplierTest() {}
 
   PreloadSupplier supplier_;
-  scoped_ptr<PreloadSupplier::Callback> loaded_callback_;
+  const scoped_ptr<const PreloadSupplier::Callback> loaded_callback_;
 
  private:
   void OnLoaded(bool success, const std::string& region_code, int num_rules) {
diff --git a/cpp/test/region_data_builder_test.cc b/cpp/test/region_data_builder_test.cc
index e986d10..a042689 100644
--- a/cpp/test/region_data_builder_test.cc
+++ b/cpp/test/region_data_builder_test.cc
@@ -51,7 +51,7 @@
 
   PreloadSupplier supplier_;
   RegionDataBuilder builder_;
-  scoped_ptr<PreloadSupplier::Callback> loaded_callback_;
+  const scoped_ptr<const PreloadSupplier::Callback> loaded_callback_;
   std::string best_language_;
 
  private:
diff --git a/cpp/test/retriever_test.cc b/cpp/test/retriever_test.cc
index 874353c..54a752b 100644
--- a/cpp/test/retriever_test.cc
+++ b/cpp/test/retriever_test.cc
@@ -90,7 +90,7 @@
 };
 
 TEST_F(RetrieverTest, RetrieveData) {
-  scoped_ptr<Retriever::Callback> callback(BuildCallback());
+  const scoped_ptr<const Retriever::Callback> callback(BuildCallback());
   retriever_.Retrieve(kKey, *callback);
 
   EXPECT_TRUE(success_);
@@ -100,10 +100,10 @@
 }
 
 TEST_F(RetrieverTest, ReadDataFromStorage) {
-  scoped_ptr<Retriever::Callback> callback1(BuildCallback());
+  const scoped_ptr<const Retriever::Callback> callback1(BuildCallback());
   retriever_.Retrieve(kKey, *callback1);
 
-  scoped_ptr<Retriever::Callback> callback2(BuildCallback());
+  const scoped_ptr<const Retriever::Callback> callback2(BuildCallback());
   retriever_.Retrieve(kKey, *callback2);
 
   EXPECT_TRUE(success_);
@@ -115,7 +115,7 @@
 TEST_F(RetrieverTest, MissingKeyReturnsEmptyData) {
   static const char kMissingKey[] = "junk";
 
-  scoped_ptr<Retriever::Callback> callback(BuildCallback());
+  const scoped_ptr<const Retriever::Callback> callback(BuildCallback());
   retriever_.Retrieve(kMissingKey, *callback);
 
   EXPECT_TRUE(success_);
@@ -129,7 +129,7 @@
                           new MockDownloader,
                           new NullStorage);
 
-  scoped_ptr<Retriever::Callback> callback(BuildCallback());
+  const scoped_ptr<const Retriever::Callback> callback(BuildCallback());
   bad_retriever.Retrieve(kKey, *callback);
 
   EXPECT_FALSE(success_);
@@ -167,7 +167,7 @@
   Retriever resilient_retriever(
       MockDownloader::kMockDataUrl, new MockDownloader, stale_storage);
 
-  scoped_ptr<Retriever::Callback> callback(BuildCallback());
+  const scoped_ptr<const Retriever::Callback> callback(BuildCallback());
   resilient_retriever.Retrieve(kKey, *callback);
 
   EXPECT_TRUE(success_);
@@ -182,7 +182,7 @@
   Retriever resilient_retriever(
       FakeDownloader::kFakeDataUrl, new FakeDownloader, stale_storage);
 
-  scoped_ptr<Retriever::Callback> callback(BuildCallback());
+  const scoped_ptr<const Retriever::Callback> callback(BuildCallback());
   resilient_retriever.Retrieve(kKey, *callback);
 
   EXPECT_TRUE(success_);
diff --git a/cpp/test/rule_retriever_test.cc b/cpp/test/rule_retriever_test.cc
index 9a32df3..bc7fdbf 100644
--- a/cpp/test/rule_retriever_test.cc
+++ b/cpp/test/rule_retriever_test.cc
@@ -74,7 +74,7 @@
 TEST_F(RuleRetrieverTest, ExistingRule) {
   static const char kExistingKey[] = "data/CA";
 
-  scoped_ptr<RuleRetriever::Callback> callback(BuildCallback());
+  const scoped_ptr<const RuleRetriever::Callback> callback(BuildCallback());
   rule_retriever_.RetrieveRule(kExistingKey, *callback);
 
   EXPECT_TRUE(success_);
@@ -85,7 +85,7 @@
 TEST_F(RuleRetrieverTest, MissingRule) {
   static const char kMissingKey[] = "junk";
 
-  scoped_ptr<RuleRetriever::Callback> callback(BuildCallback());
+  const scoped_ptr<const RuleRetriever::Callback> callback(BuildCallback());
   rule_retriever_.RetrieveRule(kMissingKey, *callback);
 
   EXPECT_TRUE(success_);  // The server returns "{}" for bad keys.
diff --git a/cpp/test/validating_storage_test.cc b/cpp/test/validating_storage_test.cc
index f786117..1efe60e 100644
--- a/cpp/test/validating_storage_test.cc
+++ b/cpp/test/validating_storage_test.cc
@@ -84,7 +84,7 @@
 TEST_F(ValidatingStorageTest, GoodData) {
   storage_.Put(kKey, new std::string(kValidatedData));
 
-  scoped_ptr<ValidatingStorage::Callback> callback(BuildCallback());
+  const scoped_ptr<const ValidatingStorage::Callback> callback(BuildCallback());
   storage_.Get(kKey, *callback);
 
   EXPECT_TRUE(success_);
@@ -95,7 +95,7 @@
 TEST_F(ValidatingStorageTest, EmptyData) {
   storage_.Put(kKey, new std::string(kEmptyData));
 
-  scoped_ptr<ValidatingStorage::Callback> callback(BuildCallback());
+  const scoped_ptr<const ValidatingStorage::Callback> callback(BuildCallback());
   storage_.Get(kKey, *callback);
 
   EXPECT_TRUE(success_);
@@ -104,7 +104,7 @@
 }
 
 TEST_F(ValidatingStorageTest, MissingKey) {
-  scoped_ptr<ValidatingStorage::Callback> callback(BuildCallback());
+  const scoped_ptr<const ValidatingStorage::Callback> callback(BuildCallback());
   storage_.Get(kKey, *callback);
 
   EXPECT_FALSE(success_);
@@ -116,7 +116,7 @@
   storage_.Put(kKey, new std::string(kValidatedData));
   wrapped_storage_->Put(kKey, new std::string("garbage"));
 
-  scoped_ptr<ValidatingStorage::Callback> callback(BuildCallback());
+  const scoped_ptr<const ValidatingStorage::Callback> callback(BuildCallback());
   storage_.Get(kKey, *callback);
 
   EXPECT_FALSE(success_);
@@ -128,7 +128,7 @@
   storage_.Put(kKey, new std::string(kValidatedData));
   wrapped_storage_->Put(kKey, new std::string(kStaleWrappedData));
 
-  scoped_ptr<ValidatingStorage::Callback> callback(BuildCallback());
+  const scoped_ptr<const ValidatingStorage::Callback> callback(BuildCallback());
   storage_.Get(kKey, *callback);
 
   EXPECT_FALSE(success_);
