diff --git a/mock_adaptors.h b/mock_adaptors.h
index 4f993ca..3bbf671 100644
--- a/mock_adaptors.h
+++ b/mock_adaptors.h
@@ -13,6 +13,43 @@
 
 namespace shill {
 
+// These are the functions that a Device adaptor must support
+class DeviceMockAdaptor : public DeviceAdaptorInterface {
+ public:
+  static const char kRpcId[];
+
+  DeviceMockAdaptor();
+  virtual ~DeviceMockAdaptor();
+  virtual const std::string &GetRpcIdentifier();
+
+  MOCK_METHOD0(UpdateEnabled, void(void));
+  MOCK_METHOD2(EmitBoolChanged, void(const std::string&, bool));
+  MOCK_METHOD2(EmitUintChanged, void(const std::string&, uint32));
+  MOCK_METHOD2(EmitIntChanged, void(const std::string&, int));
+  MOCK_METHOD2(EmitStringChanged, void(const std::string&, const std::string&));
+
+ private:
+  const std::string rpc_id;
+};
+
+// These are the functions that a IPConfig adaptor must support
+class IPConfigMockAdaptor : public IPConfigAdaptorInterface {
+ public:
+  static const char kRpcId[];
+
+  IPConfigMockAdaptor();
+  virtual ~IPConfigMockAdaptor();
+  virtual const std::string &GetRpcIdentifier();
+
+  MOCK_METHOD2(EmitBoolChanged, void(const std::string&, bool));
+  MOCK_METHOD2(EmitUintChanged, void(const std::string&, uint32));
+  MOCK_METHOD2(EmitIntChanged, void(const std::string&, int));
+  MOCK_METHOD2(EmitStringChanged, void(const std::string&, const std::string&));
+
+ private:
+  const std::string rpc_id;
+};
+
 // These are the functions that a Manager adaptor must support
 class ManagerMockAdaptor : public ManagerAdaptorInterface {
  public:
@@ -34,6 +71,24 @@
   const std::string rpc_id;
 };
 
+// These are the functions that a Profile adaptor must support
+class ProfileMockAdaptor : public ProfileAdaptorInterface {
+ public:
+  static const char kRpcId[];
+
+  ProfileMockAdaptor();
+  virtual ~ProfileMockAdaptor();
+  virtual const std::string &GetRpcIdentifier();
+
+  MOCK_METHOD2(EmitBoolChanged, void(const std::string&, bool));
+  MOCK_METHOD2(EmitUintChanged, void(const std::string&, uint32));
+  MOCK_METHOD2(EmitIntChanged, void(const std::string&, int));
+  MOCK_METHOD2(EmitStringChanged, void(const std::string&, const std::string&));
+
+ private:
+  const std::string rpc_id;
+};
+
 // These are the functions that a Service adaptor must support
 class ServiceMockAdaptor : public ServiceAdaptorInterface {
  public:
@@ -53,35 +108,5 @@
   const std::string rpc_id;
 };
 
-// These are the functions that a Device adaptor must support
-class DeviceMockAdaptor : public DeviceAdaptorInterface {
- public:
-  static const char kRpcId[];
-
-  DeviceMockAdaptor();
-  virtual ~DeviceMockAdaptor();
-  virtual const std::string &GetRpcIdentifier();
-
-  MOCK_METHOD0(UpdateEnabled, void(void));
-  MOCK_METHOD2(EmitBoolChanged, void(const std::string&, bool));
-  MOCK_METHOD2(EmitUintChanged, void(const std::string&, uint32));
-  MOCK_METHOD2(EmitIntChanged, void(const std::string&, int));
-  MOCK_METHOD2(EmitStringChanged, void(const std::string&, const std::string&));
-
- private:
-  const std::string rpc_id;
-};
-
-// These are the functions that a Profile adaptor must support
-class ProfileMockAdaptor : public ProfileAdaptorInterface {
- public:
-  ProfileMockAdaptor() {}
-  virtual ~ProfileMockAdaptor() {}
-  MOCK_METHOD2(EmitBoolChanged, void(const std::string&, bool));
-  MOCK_METHOD2(EmitUintChanged, void(const std::string&, uint32));
-  MOCK_METHOD2(EmitIntChanged, void(const std::string&, int));
-  MOCK_METHOD2(EmitStringChanged, void(const std::string&, const std::string&));
-};
-
 }  // namespace shill
 #endif  // SHILL_MOCK_ADAPTORS_
