diff --git a/cellular.cc b/cellular.cc
index b4375e8..8cd8a04 100644
--- a/cellular.cc
+++ b/cellular.cc
@@ -15,7 +15,6 @@
 #include "shill/control_interface.h"
 #include "shill/device.h"
 #include "shill/device_info.h"
-#include "shill/entry.h"
 #include "shill/manager.h"
 #include "shill/profile.h"
 #include "shill/property_accessor.h"
@@ -99,7 +98,6 @@
                                    dispatcher,
                                    this,
                                    manager->ActiveProfile(),
-                                   new Entry(manager->ActiveProfile()->name()),
                                    "service-" + link_name())),
       service_registered_(false) {
   store_.RegisterConstString(flimflam::kCarrierProperty, &carrier_);
diff --git a/cellular_service.cc b/cellular_service.cc
index c5e577b..cd087f0 100644
--- a/cellular_service.cc
+++ b/cellular_service.cc
@@ -23,9 +23,8 @@
                                  EventDispatcher *dispatcher,
                                  const CellularRefPtr &device,
                                  const ProfileRefPtr &profile,
-                                 const EntryRefPtr &entry,
                                  const string &name)
-    : Service(control_interface, dispatcher, profile, entry, name),
+    : Service(control_interface, dispatcher, profile, name),
       strength_(0),
       cellular_(device),
       type_(flimflam::kTypeCellular) {
diff --git a/cellular_service.h b/cellular_service.h
index 64a61c9..069cf6c 100644
--- a/cellular_service.h
+++ b/cellular_service.h
@@ -22,7 +22,6 @@
                   EventDispatcher *dispatcher,
                   const CellularRefPtr &device,
                   const ProfileRefPtr &profile,
-                  const EntryRefPtr &entry,
                   const std::string& name);
   ~CellularService();
   void Connect();
diff --git a/dbus_adaptor_unittest.cc b/dbus_adaptor_unittest.cc
index 5a83817..3eb5aae 100644
--- a/dbus_adaptor_unittest.cc
+++ b/dbus_adaptor_unittest.cc
@@ -12,7 +12,6 @@
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
 
-#include "shill/entry.h"
 #include "shill/manager.h"
 #include "shill/mock_control.h"
 #include "shill/mock_device.h"
@@ -60,7 +59,6 @@
         service_(new MockService(&control_interface_,
                                  &dispatcher_,
                                  new MockProfile(&control_interface_, &glib_),
-                                 new Entry("mock"),
                                  "mock")) {
     ex_stringmap_[ex_string_] = ex_string_;
     stringmap_v_ = DBusAdaptor::StringmapToVariant(ex_stringmap_);
diff --git a/device_info_unittest.cc b/device_info_unittest.cc
index 6f3c08d..21e9243 100644
--- a/device_info_unittest.cc
+++ b/device_info_unittest.cc
@@ -55,8 +55,8 @@
   void AddLink();
 
  protected:
-  static const int kTestSocket = 123;
-  static const int kTestDeviceIndex = 123456;
+  static const int kTestSocket;
+  static const int kTestDeviceIndex;
   static const char kTestDeviceName[];
 
   void StartRTNLHandler();
@@ -71,6 +71,8 @@
   ScopedRunnableMethodFactory<DeviceInfoTest> task_factory_;
 };
 
+const int DeviceInfoTest::kTestSocket = 123;
+const int DeviceInfoTest::kTestDeviceIndex = 123456;
 const char DeviceInfoTest::kTestDeviceName[] = "test-device";
 
 void DeviceInfoTest::StartRTNLHandler() {
diff --git a/entry.h b/entry.h
deleted file mode 100644
index efd7573..0000000
--- a/entry.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef SHILL_ENTRY_
-#define SHILL_ENTRY_
-
-#include <string>
-
-#include "shill/refptr_types.h"
-
-namespace shill {
-
-class Entry : public base::RefCounted<Entry> {
- public:
-  struct EapCredentials {
-    EapCredentials() : use_system_cas(false) {}
-    std::string identity;
-    std::string eap;
-    std::string inner_eap;
-    std::string anonymous_identity;
-    std::string client_cert;
-    std::string cert_id;
-    std::string private_key;
-    std::string private_key_password;
-    std::string key_id;
-    std::string ca_cert;
-    std::string ca_cert_id;
-    bool use_system_cas;
-    std::string pin;
-    std::string password;
-    std::string key_management;
-  };
-
-  explicit Entry(const std::string &profile)
-      : profile_name(profile),
-        auto_connect(false),
-        hidden_ssid(false),
-        save_credentials(false) {
-  }
-  virtual ~Entry() {}
-
-  // Properties queryable via RPC.
-  std::string profile_name;
-  bool auto_connect;
-  std::string failure;
-  std::string modified;
-  std::string mode;           // wifi services only.
-  std::string security;       // wifi services only.
-  bool hidden_ssid;    // wifi services only.
-  std::string provider_name;  // VPN services only.
-  std::string provider_host;  // VPN services only.
-  std::string provider_type;  // VPN services only.
-  std::string vpn_domain;     // VPN services only.
-
-  bool save_credentials;
-  EapCredentials eap;         // Only saved if |save_credentials| is true.
-
-  // Properties not queryable via RPC.
-  ServiceRefPtr service;
- private:
-  DISALLOW_COPY_AND_ASSIGN(Entry);
-};
-
-}  // namespace shill
-
-#endif  // SHILL_ENTRY_
diff --git a/ephemeral_profile.cc b/ephemeral_profile.cc
index 364274f..1009877 100644
--- a/ephemeral_profile.cc
+++ b/ephemeral_profile.cc
@@ -11,7 +11,6 @@
 
 #include "shill/adaptor_interfaces.h"
 #include "shill/control_interface.h"
-#include "shill/entry.h"
 #include "shill/manager.h"
 
 using std::map;
@@ -28,12 +27,12 @@
 
 EphemeralProfile::~EphemeralProfile() {}
 
-bool EphemeralProfile::MoveToActiveProfile(const std::string &entry_name) {
-  map<string, EntryRefPtr>::iterator it = entries_.find(entry_name);
-  if (it == entries_.end())
+bool EphemeralProfile::MoveToActiveProfile(const std::string &name) {
+  map<string, ServiceRefPtr>::iterator it = services_.find(name);
+  if (it == services_.end())
     return false;
-  manager_->ActiveProfile()->AdoptEntry(entry_name, it->second);
-  entries_.erase(it);
+  manager_->ActiveProfile()->AdoptService(name, it->second);
+  services_.erase(it);
   return true;
 }
 
diff --git a/ephemeral_profile.h b/ephemeral_profile.h
index ab8290a..0503fa0 100644
--- a/ephemeral_profile.h
+++ b/ephemeral_profile.h
@@ -29,7 +29,7 @@
                    Manager *manager);
   virtual ~EphemeralProfile();
 
-  virtual bool MoveToActiveProfile(const std::string &entry_name);
+  virtual bool MoveToActiveProfile(const std::string &name);
 
  private:
   Manager *manager_;
diff --git a/ethernet.cc b/ethernet.cc
index c9037a9..a13655f 100644
--- a/ethernet.cc
+++ b/ethernet.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "shill/ethernet.h"
+
 #include <time.h>
 #include <stdio.h>
 #include <netinet/ether.h>
@@ -16,8 +18,6 @@
 #include "shill/device_info.h"
 #include "shill/manager.h"
 #include "shill/shill_event.h"
-#include "shill/entry.h"
-#include "shill/ethernet.h"
 #include "shill/ethernet_service.h"
 #include "shill/profile.h"
 #include "shill/rtnl_handler.h"
@@ -41,7 +41,6 @@
                                    dispatcher,
                                    this,
                                    manager->ActiveProfile(),
-                                   new Entry(manager->ActiveProfile()->name()),
                                    "service-" + link_name)),
       link_up_(false) {
   VLOG(2) << "Ethernet device " << link_name << " initialized.";
diff --git a/ethernet_service.cc b/ethernet_service.cc
index 4d26593..047e99c 100644
--- a/ethernet_service.cc
+++ b/ethernet_service.cc
@@ -17,7 +17,6 @@
 #include "shill/control_interface.h"
 #include "shill/device.h"
 #include "shill/device_info.h"
-#include "shill/entry.h"
 #include "shill/ethernet.h"
 #include "shill/manager.h"
 #include "shill/profile.h"
@@ -31,9 +30,8 @@
                                  EventDispatcher *dispatcher,
                                  const EthernetRefPtr &device,
                                  const ProfileRefPtr &profile,
-                                 const EntryRefPtr &entry,
                                  const string &name)
-    : Service(control_interface, dispatcher, profile, entry, name),
+    : Service(control_interface, dispatcher, profile, name),
       ethernet_(device),
       type_(flimflam::kTypeEthernet) {
   set_auto_connect(true);
diff --git a/ethernet_service.h b/ethernet_service.h
index 7c24cdc..4d9a3cb 100644
--- a/ethernet_service.h
+++ b/ethernet_service.h
@@ -19,7 +19,6 @@
                   EventDispatcher *dispatcher,
                   const EthernetRefPtr &device,
                   const ProfileRefPtr &profile,
-                  const EntryRefPtr &entry,
                   const std::string& name);
   ~EthernetService();
   void Connect();
diff --git a/manager_unittest.cc b/manager_unittest.cc
index 848bfe1..d862979 100644
--- a/manager_unittest.cc
+++ b/manager_unittest.cc
@@ -14,7 +14,6 @@
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
 
-#include "shill/entry.h"
 #include "shill/mock_control.h"
 #include "shill/mock_device.h"
 #include "shill/mock_glib.h"
@@ -107,14 +106,12 @@
       new NiceMock<MockService>(&control_interface_,
                                 &dispatcher_,
                                 new MockProfile(&control_interface_, &glib_),
-                                new Entry("mock"),
                                 kService1));
 
   scoped_refptr<MockService> mock_service2(
       new NiceMock<MockService>(&control_interface_,
                                 &dispatcher_,
                                 new MockProfile(&control_interface_, &glib_),
-                                new Entry("mock"),
                                 kService2));
 
   manager_.RegisterService(mock_service);
diff --git a/mock_service.cc b/mock_service.cc
index 4501c9c..5b262b4 100644
--- a/mock_service.cc
+++ b/mock_service.cc
@@ -22,9 +22,8 @@
 MockService::MockService(ControlInterface *control_interface,
                          EventDispatcher *dispatcher,
                          const ProfileRefPtr &profile,
-                         const EntryRefPtr &entry,
                          const string& name)
-    : Service(control_interface, dispatcher, profile, entry, name) {
+    : Service(control_interface, dispatcher, profile, name) {
 }
 
 MockService::~MockService() {}
diff --git a/mock_service.h b/mock_service.h
index 8e4b887..0a7cd74 100644
--- a/mock_service.h
+++ b/mock_service.h
@@ -22,7 +22,6 @@
   MockService(ControlInterface *control_interface,
               EventDispatcher *dispatcher,
               const ProfileRefPtr &profile,
-              const EntryRefPtr &entry,
               const std::string& name);
   virtual ~MockService();
 
diff --git a/profile.cc b/profile.cc
index e03c09e..799f253 100644
--- a/profile.cc
+++ b/profile.cc
@@ -12,7 +12,6 @@
 
 #include "shill/adaptor_interfaces.h"
 #include "shill/control_interface.h"
-#include "shill/entry.h"
 #include "shill/property_accessor.h"
 #include "shill/service.h"
 
@@ -45,10 +44,9 @@
 
 Profile::~Profile() {}
 
-void Profile::AdoptEntry(const std::string &entry_name,
-                         const EntryRefPtr &entry) {
-  entry->profile_name = name();
-  entries_[entry_name] = entry;
+void Profile::AdoptService(const std::string &name,
+                           const ServiceRefPtr &service) {
+  services_[name] = service;
 }
 
 bool Profile::IsValidIdentifierToken(const std::string &token) {
diff --git a/profile.h b/profile.h
index 8951474..8b18103 100644
--- a/profile.h
+++ b/profile.h
@@ -43,10 +43,10 @@
 
   PropertyStore *store() { return &store_; }
 
-  // Begin managing the persistence of |entry|, addressable by |entry_name|.
-  void AdoptEntry(const std::string &entry_name, const EntryRefPtr &entry);
+  // Begin managing the persistence of |service|, addressable by |name|.
+  void AdoptService(const std::string &name, const ServiceRefPtr &service);
 
-  virtual bool MoveToActiveProfile(const std::string &entry_name) {
+  virtual bool MoveToActiveProfile(const std::string &name) {
     return false;
   }
 
@@ -74,14 +74,14 @@
 
   // Entries representing services that are persisted to disk.
   // A std::map because we will need random access for GetEntry(), but usually
-  // will want to iterate over all Entries.
-  std::map<std::string, EntryRefPtr> entries_;
+  // will want to iterate over all Services.
+  std::map<std::string, ServiceRefPtr> services_;
 
  private:
   friend class ProfileAdaptorInterface;
   FRIEND_TEST(ProfileTest, IsValidIdentifierToken);
-  // TODO(cmasone): once we can add entries organically, take this out.
-  FRIEND_TEST(ServiceTest, MoveEntry);
+  // TODO(cmasone): once we can add services organically, take this out.
+  FRIEND_TEST(ServiceTest, MoveService);
 
   static bool IsValidIdentifierToken(const std::string &token);
 
diff --git a/refptr_types.h b/refptr_types.h
index 6748918..8a1dbd9 100644
--- a/refptr_types.h
+++ b/refptr_types.h
@@ -58,9 +58,6 @@
 class Profile;
 typedef scoped_refptr<Profile> ProfileRefPtr;
 
-class Entry;
-typedef scoped_refptr<Entry> EntryRefPtr;
-
 }  // namespace shill
 
 #endif  // SHILL_REFPTR_TYPES_
diff --git a/service.cc b/service.cc
index 17367ff..0ce233d 100644
--- a/service.cc
+++ b/service.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "shill/service.h"
+
 #include <time.h>
 #include <stdio.h>
 
@@ -14,12 +16,10 @@
 #include <chromeos/dbus/service_constants.h>
 
 #include "shill/control_interface.h"
-#include "shill/entry.h"
 #include "shill/error.h"
 #include "shill/profile.h"
 #include "shill/property_accessor.h"
 #include "shill/refptr_types.h"
-#include "shill/service.h"
 #include "shill/service_dbus_adaptor.h"
 
 using std::map;
@@ -30,14 +30,13 @@
 Service::Service(ControlInterface *control_interface,
                  EventDispatcher *dispatcher,
                  const ProfileRefPtr &profile,
-                 const EntryRefPtr &entry,
                  const string& name)
     : auto_connect_(false),
       connectable_(false),
       favorite_(false),
       priority_(0),
+      save_credentials_(false),
       profile_(profile),
-      entry_(entry),
       dispatcher_(dispatcher),
       name_(name),
       available_(false),
@@ -63,34 +62,29 @@
                             &Service::GetDeviceRpcId,
                             NULL);
 
-  store_.RegisterString(flimflam::kEapIdentityProperty, &entry_->eap.identity);
-  store_.RegisterString(flimflam::kEAPEAPProperty, &entry_->eap.eap);
-  store_.RegisterString(flimflam::kEapPhase2AuthProperty,
-                        &entry_->eap.inner_eap);
+  store_.RegisterString(flimflam::kEapIdentityProperty, &eap_.identity);
+  store_.RegisterString(flimflam::kEAPEAPProperty, &eap_.eap);
+  store_.RegisterString(flimflam::kEapPhase2AuthProperty, &eap_.inner_eap);
   store_.RegisterString(flimflam::kEapAnonymousIdentityProperty,
-                        &entry_->eap.anonymous_identity);
-  store_.RegisterString(flimflam::kEAPClientCertProperty,
-                        &entry_->eap.client_cert);
-  store_.RegisterString(flimflam::kEAPCertIDProperty, &entry_->eap.cert_id);
-  store_.RegisterString(flimflam::kEapPrivateKeyProperty,
-                        &entry_->eap.private_key);
+                        &eap_.anonymous_identity);
+  store_.RegisterString(flimflam::kEAPClientCertProperty, &eap_.client_cert);
+  store_.RegisterString(flimflam::kEAPCertIDProperty, &eap_.cert_id);
+  store_.RegisterString(flimflam::kEapPrivateKeyProperty, &eap_.private_key);
   store_.RegisterString(flimflam::kEapPrivateKeyPasswordProperty,
-                        &entry_->eap.private_key_password);
-  store_.RegisterString(flimflam::kEAPKeyIDProperty, &entry_->eap.key_id);
-  store_.RegisterString(flimflam::kEapCaCertProperty, &entry_->eap.ca_cert);
-  store_.RegisterString(flimflam::kEapCaCertIDProperty,
-                        &entry_->eap.ca_cert_id);
-  store_.RegisterString(flimflam::kEAPPINProperty, &entry_->eap.pin);
-  store_.RegisterString(flimflam::kEapPasswordProperty, &entry_->eap.password);
-  store_.RegisterString(flimflam::kEapKeyMgmtProperty,
-                        &entry_->eap.key_management);
-  store_.RegisterBool(flimflam::kEapUseSystemCAsProperty,
-                      &entry_->eap.use_system_cas);
+                        &eap_.private_key_password);
+  store_.RegisterString(flimflam::kEAPKeyIDProperty, &eap_.key_id);
+  store_.RegisterString(flimflam::kEapCaCertProperty, &eap_.ca_cert);
+  store_.RegisterString(flimflam::kEapCaCertIDProperty, &eap_.ca_cert_id);
+  store_.RegisterString(flimflam::kEAPPINProperty, &eap_.pin);
+  store_.RegisterString(flimflam::kEapPasswordProperty, &eap_.password);
+  store_.RegisterString(flimflam::kEapKeyMgmtProperty, &eap_.key_management);
+  store_.RegisterBool(flimflam::kEapUseSystemCAsProperty, &eap_.use_system_cas);
 
   store_.RegisterConstString(flimflam::kErrorProperty, &error_);
   store_.RegisterConstBool(flimflam::kFavoriteProperty, &favorite_);
   HelpRegisterDerivedBool(flimflam::kIsActiveProperty,
-                          &Service::IsActive, NULL);
+                          &Service::IsActive,
+                          NULL);
   // flimflam::kModeProperty: Registered in WiFiService
   store_.RegisterConstString(flimflam::kNameProperty, &name_);
   // flimflam::kPassphraseProperty: Registered in WiFiService
@@ -103,8 +97,7 @@
   // TODO(cmasone): Create VPN Service with this property
   // store_.RegisterConstStringmap(flimflam::kProviderProperty, &provider_);
 
-  store_.RegisterBool(flimflam::kSaveCredentialsProperty,
-                      &entry_->save_credentials);
+  store_.RegisterBool(flimflam::kSaveCredentialsProperty, &save_credentials_);
   // flimflam::kSecurityProperty: Registered in WiFiService
   HelpRegisterDerivedString(flimflam::kStateProperty,
                             &Service::CalculateState,
diff --git a/service.h b/service.h
index 2ded257..f6f6418 100644
--- a/service.h
+++ b/service.h
@@ -55,12 +55,29 @@
     kServiceStateDisconnected,
     kServiceStateFailure
   };
+  struct EapCredentials {
+    EapCredentials() : use_system_cas(false) {}
+    std::string identity;
+    std::string eap;
+    std::string inner_eap;
+    std::string anonymous_identity;
+    std::string client_cert;
+    std::string cert_id;
+    std::string private_key;
+    std::string private_key_password;
+    std::string key_id;
+    std::string ca_cert;
+    std::string ca_cert_id;
+    bool use_system_cas;
+    std::string pin;
+    std::string password;
+    std::string key_management;
+  };
 
   // A constructor for the Service object
   Service(ControlInterface *control_interface,
           EventDispatcher *dispatcher,
           const ProfileRefPtr &profile,
-          const EntryRefPtr &entry,
           const std::string& name);
   virtual ~Service();
   virtual void Connect() = 0;
@@ -97,9 +114,10 @@
   bool favorite_;
   int32 priority_;
   std::string proxy_config_;
+  bool save_credentials_;
+  EapCredentials eap_;  // Only saved if |save_credentials_| is true.
 
   ProfileRefPtr profile_;
-  EntryRefPtr entry_;
   PropertyStore store_;
 
   EventDispatcher *dispatcher_;
diff --git a/service_unittest.cc b/service_unittest.cc
index a67d56f..e47bd2e 100644
--- a/service_unittest.cc
+++ b/service_unittest.cc
@@ -14,7 +14,6 @@
 #include <gmock/gmock.h>
 
 #include "shill/dbus_adaptor.h"
-#include "shill/entry.h"
 #include "shill/ethernet_service.h"
 #include "shill/manager.h"
 #include "shill/mock_adaptors.h"
@@ -38,14 +37,12 @@
  public:
   static const char kMockServiceName[];
   static const char kMockDeviceRpcId[];
-  static const char kEntryName[];
   static const char kProfileName[];
 
   ServiceTest()
       : service_(new MockService(&control_interface_,
                                  &dispatcher_,
                                  new MockProfile(&control_interface_, &glib_),
-                                 new Entry(kEntryName),
                                  kMockServiceName)) {
   }
 
@@ -59,8 +56,6 @@
 
 const char ServiceTest::kMockDeviceRpcId[] = "mock-device-rpc";
 
-const char ServiceTest::kEntryName[] = "entry";
-
 const char ServiceTest::kProfileName[] = "profile";
 
 TEST_F(ServiceTest, GetProperties) {
@@ -150,36 +145,40 @@
   }
 }
 
-TEST_F(ServiceTest, MoveEntry) {
-  // Create a Profile with an Entry in it that should back our Service.
-  EntryRefPtr entry(new Entry(kProfileName));
+TEST_F(ServiceTest, MoveService) {
+  // I want to ensure that the Profiles are managing this Service object
+  // lifetime properly, so I can't hold a ref to it here.
   ProfileRefPtr profile(new Profile(&control_interface_, &glib_));
-  profile->entries_[kEntryName] = entry;
+  {
+    ServiceRefPtr s2(
+        new MockService(&control_interface_,
+                        &dispatcher_,
+                        new MockProfile(&control_interface_, &glib_),
+                        kMockServiceName));
+    profile->services_[kMockServiceName] = s2;
+  }
 
-  scoped_refptr<MockService> service(new MockService(&control_interface_,
-                                                     &dispatcher_,
-                                                     profile,
-                                                     entry,
-                                                     kMockServiceName));
-  // Now, move the entry to another profile.
+  // Now, move the service to another profile.
   ProfileRefPtr profile2(new Profile(&control_interface_, &glib_));
-  map<string, EntryRefPtr>::iterator it = profile->entries_.find(kEntryName);
-  ASSERT_TRUE(it != profile->entries_.end());
+  map<string, ServiceRefPtr>::iterator it =
+      profile->services_.find(kMockServiceName);
+  ASSERT_TRUE(it != profile->services_.end());
 
-  profile2->AdoptEntry(it->first, it->second);
-  profile->entries_.erase(it);
-  // Force destruction of the original Profile, to ensure that the Entry
+  profile2->AdoptService(it->first, it->second);
+  // Force destruction of the original Profile, to ensure that the Service
   // is kept alive and populated with data.
   profile = NULL;
   {
+    map<string, ServiceRefPtr>::iterator it =
+        profile2->services_.find(kMockServiceName);
     Error error(Error::kInvalidProperty, "");
     ::DBus::Error dbus_error;
     map<string, ::DBus::Variant> props;
     bool expected = true;
-    service->store()->SetBoolProperty(flimflam::kAutoConnectProperty,
-                                      expected,
-                                      &error);
-    DBusAdaptor::GetProperties(service->store(), &props, &dbus_error);
+    it->second->store()->SetBoolProperty(flimflam::kAutoConnectProperty,
+                                         expected,
+                                         &error);
+    DBusAdaptor::GetProperties(it->second->store(), &props, &dbus_error);
     ASSERT_FALSE(props.find(flimflam::kAutoConnectProperty) == props.end());
     EXPECT_EQ(props[flimflam::kAutoConnectProperty].reader().get_bool(),
               expected);
diff --git a/wifi.cc b/wifi.cc
index 535b7af..04a0f56 100644
--- a/wifi.cc
+++ b/wifi.cc
@@ -18,7 +18,6 @@
 
 #include "shill/control_interface.h"
 #include "shill/device.h"
-#include "shill/entry.h"
 #include "shill/manager.h"
 #include "shill/profile.h"
 #include "shill/shill_event.h"
@@ -296,7 +295,6 @@
                           dispatcher_,
                           this,
                           manager_->ActiveProfile(),
-                          new Entry(manager_->ActiveProfile()->name()),
                           endpoint.ssid(),
                           endpoint.network_mode(),
                           kSupplicantKeyModeNone,
diff --git a/wifi_service.cc b/wifi_service.cc
index ab76b2e..c3ff605 100644
--- a/wifi_service.cc
+++ b/wifi_service.cc
@@ -11,7 +11,6 @@
 
 #include "shill/control_interface.h"
 #include "shill/device.h"
-#include "shill/entry.h"
 #include "shill/shill_event.h"
 #include "shill/wifi.h"
 
@@ -23,28 +22,27 @@
                          EventDispatcher *dispatcher,
                          const WiFiRefPtr &device,
                          const ProfileRefPtr &profile,
-                         const EntryRefPtr &entry,
                          const std::vector<uint8_t> ssid,
                          uint32_t mode,
                          const std::string &key_management,
                          const std::string &name)
-    : Service(control_interface, dispatcher, profile, entry, name),
+    : Service(control_interface, dispatcher, profile, name),
       task_factory_(this),
       wifi_(device),
       ssid_(ssid),
       mode_(mode) {
-  entry_->eap.key_management = key_management;
+  eap_.key_management = key_management;
 
   // TODO(cmasone): Figure out if mode_ should be a string or what
-  // store_.RegisterString(flimflam::kModeProperty, &entry_->mode);
+  // store_.RegisterString(flimflam::kModeProperty, &mode_);
   store_.RegisterString(flimflam::kPassphraseProperty, &passphrase_);
   store_.RegisterBool(flimflam::kPassphraseRequiredProperty, &need_passphrase_);
-  store_.RegisterConstString(flimflam::kSecurityProperty, &entry_->security);
+  store_.RegisterConstString(flimflam::kSecurityProperty, &security_);
   store_.RegisterConstUint8(flimflam::kSignalStrengthProperty, &strength_);
   store_.RegisterConstString(flimflam::kTypeProperty, &type_);
 
   store_.RegisterConstString(flimflam::kWifiAuthMode, &auth_mode_);
-  store_.RegisterConstBool(flimflam::kWifiHiddenSsid, &entry_->hidden_ssid);
+  store_.RegisterConstBool(flimflam::kWifiHiddenSsid, &hidden_ssid_);
   store_.RegisterConstUint16(flimflam::kWifiFrequency, &frequency_);
   store_.RegisterConstUint16(flimflam::kWifiPhyMode, &physical_mode_);
   store_.RegisterConstUint16(flimflam::kWifiHexSsid, &hex_ssid_);
@@ -73,7 +71,7 @@
 }
 
 const std::string &WiFiService::key_management() const {
-  return entry_->eap.key_management;
+  return eap_.key_management;
 }
 
 const std::vector<uint8_t> &WiFiService::ssid() const {
diff --git a/wifi_service.h b/wifi_service.h
index cbd5868..c144a83 100644
--- a/wifi_service.h
+++ b/wifi_service.h
@@ -21,7 +21,6 @@
               EventDispatcher *dispatcher,
               const WiFiRefPtr &device,
               const ProfileRefPtr &profile,
-              const EntryRefPtr &entry,
               const std::vector<uint8_t> ssid,
               uint32_t mode,
               const std::string &key_management,
