diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc
index 0ef58d7..80e7e9b 100644
--- a/buffet/device_registration_info.cc
+++ b/buffet/device_registration_info.cc
@@ -236,7 +236,7 @@
   dict.SetString(storage_keys::kAnonymousAccessRole,
                  config_->anonymous_access_role());
 
-  return storage_->Save(&dict);
+  return storage_->Save(dict);
 }
 
 void DeviceRegistrationInfo::ScheduleStartDevice(const base::TimeDelta& later) {
diff --git a/buffet/device_registration_info_unittest.cc b/buffet/device_registration_info_unittest.cc
index ec68b21..417aff4 100644
--- a/buffet/device_registration_info_unittest.cc
+++ b/buffet/device_registration_info_unittest.cc
@@ -186,7 +186,7 @@
  protected:
   void SetUp() override {
     storage_ = std::make_shared<MemStorage>();
-    storage_->Save(&data_);
+    storage_->Save(data_);
     transport_ = std::make_shared<chromeos::http::fake::Transport>();
     command_manager_ = std::make_shared<CommandManager>();
     state_manager_ = std::make_shared<StateManager>(&mock_state_change_queue_);
@@ -250,7 +250,7 @@
   data.SetString(storage_keys::kLocation, "m");
   data.SetString(storage_keys::kAnonymousAccessRole, "user");
 
-  storage_->Save(&data);
+  storage_->Save(data);
 
   // This test isn't really trying to test Load, it is just the easiest
   // way to initialize the properties in dev_reg_.
@@ -258,7 +258,7 @@
 
   // Clear the storage to get a clean test.
   base::DictionaryValue empty;
-  storage_->Save(&empty);
+  storage_->Save(empty);
   EXPECT_TRUE(DeviceRegistrationInfo::TestHelper::Save(dev_reg_.get()));
   EXPECT_TRUE(storage_->Load()->Equals(&data));
 }
@@ -287,7 +287,7 @@
   EXPECT_EQ(0, transport_->GetRequestCount());
 
   SetDefaultDeviceRegistration(&data_);
-  storage_->Save(&data_);
+  storage_->Save(data_);
   EXPECT_TRUE(dev_reg_->Load());
 
   transport_->AddHandler(dev_reg_->GetOAuthURL("token"),
@@ -301,7 +301,7 @@
 
 TEST_F(DeviceRegistrationInfoTest, CheckAuthenticationFailure) {
   SetDefaultDeviceRegistration(&data_);
-  storage_->Save(&data_);
+  storage_->Save(data_);
   EXPECT_TRUE(dev_reg_->Load());
   EXPECT_EQ(RegistrationStatus::kConnecting, dev_reg_->GetRegistrationStatus());
 
@@ -319,7 +319,7 @@
 
 TEST_F(DeviceRegistrationInfoTest, CheckDeregistration) {
   SetDefaultDeviceRegistration(&data_);
-  storage_->Save(&data_);
+  storage_->Save(data_);
   EXPECT_TRUE(dev_reg_->Load());
   EXPECT_EQ(RegistrationStatus::kConnecting, dev_reg_->GetRegistrationStatus());
 
@@ -338,7 +338,7 @@
 
 TEST_F(DeviceRegistrationInfoTest, GetDeviceInfo) {
   SetDefaultDeviceRegistration(&data_);
-  storage_->Save(&data_);
+  storage_->Save(data_);
   EXPECT_TRUE(dev_reg_->Load());
 
   transport_->AddHandler(dev_reg_->GetOAuthURL("token"),
@@ -360,7 +360,7 @@
 
 TEST_F(DeviceRegistrationInfoTest, GetDeviceId) {
   SetDefaultDeviceRegistration(&data_);
-  storage_->Save(&data_);
+  storage_->Save(data_);
   EXPECT_TRUE(dev_reg_->Load());
 
   transport_->AddHandler(dev_reg_->GetOAuthURL("token"),
@@ -513,7 +513,7 @@
             dev_reg_->GetRegistrationStatus());
   // Put some credentials into our state, make sure we call that offline.
   SetDefaultDeviceRegistration(&data_);
-  storage_->Save(&data_);
+  storage_->Save(data_);
   EXPECT_TRUE(dev_reg_->Load());
   EXPECT_EQ(RegistrationStatus::kConnecting, dev_reg_->GetRegistrationStatus());
 }
diff --git a/buffet/storage_impls.cc b/buffet/storage_impls.cc
index d95538a..e45ddbf 100644
--- a/buffet/storage_impls.cc
+++ b/buffet/storage_impls.cc
@@ -23,10 +23,10 @@
   return std::unique_ptr<base::Value>(base::JSONReader::Read(json));
 }
 
-bool FileStorage::Save(const base::Value* config) {
+bool FileStorage::Save(const base::Value& config) {
   std::string json;
   base::JSONWriter::WriteWithOptions(
-      config, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
+      &config, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
   return base::ImportantFileWriter::WriteFileAtomically(file_path_, json);
 }
 
@@ -35,8 +35,8 @@
   return std::unique_ptr<base::Value>(cache_->DeepCopy());
 }
 
-bool MemStorage::Save(const base::Value* config) {
-  cache_.reset(config->DeepCopy());
+bool MemStorage::Save(const base::Value& config) {
+  cache_.reset(config.DeepCopy());
   ++save_count_;
   return true;
 }
diff --git a/buffet/storage_impls.h b/buffet/storage_impls.h
index 8b90a6c..f4034be 100644
--- a/buffet/storage_impls.h
+++ b/buffet/storage_impls.h
@@ -19,7 +19,7 @@
   explicit FileStorage(const base::FilePath& file_path);
   virtual ~FileStorage() = default;
   std::unique_ptr<base::Value> Load() override;
-  bool Save(const base::Value* config) override;
+  bool Save(const base::Value& config) override;
 
  private:
   base::FilePath file_path_;
@@ -32,7 +32,7 @@
   MemStorage() = default;
   virtual ~MemStorage() = default;
   std::unique_ptr<base::Value> Load() override;
-  bool Save(const base::Value* config) override;
+  bool Save(const base::Value& config) override;
   int save_count() { return save_count_; }
   void reset_save_count() { save_count_ = 0; }
 
diff --git a/buffet/storage_interface.h b/buffet/storage_interface.h
index 26d71c1..4f05235 100644
--- a/buffet/storage_interface.h
+++ b/buffet/storage_interface.h
@@ -24,7 +24,7 @@
   // If saved successfully, returns true. Could fail when writing to
   // physical storage like file system for various reasons (out of disk space,
   // access permissions, etc).
-  virtual bool Save(const base::Value* config) = 0;
+  virtual bool Save(const base::Value& config) = 0;
 };
 
 }  // namespace buffet
