Cleanup primary service registration from storage
diff --git a/src/adapter.c b/src/adapter.c
index c400bfd..6caff9a 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -58,8 +58,6 @@
 #include "storage.h"
 #include "attrib-server.h"
 #include "att.h"
-#include "gattrib.h"
-#include "attrib/client.h"
 
 /* Interleaved discovery window: 5.12 sec */
 #define GAP_INTER_DISCOV_WIN		5120
@@ -2193,16 +2191,11 @@
 	for (l = services, uuids = NULL; l; l = l->next) {
 		struct att_primary *prim = l->data;
 		uuids = g_slist_append(uuids, prim->uuid);
-
-		device_add_primary(device, prim);
 	}
 
-	/* FIXME: Need the correct psm */
-	attrib_client_register(connection, device, -1, NULL, services);
-
 	device_probe_drivers(device, uuids);
+	device_register_services(connection, device, services, -1);
 
-	g_slist_free(services);
 	g_slist_free(uuids);
 }
 
diff --git a/src/device.c b/src/device.c
index ecd1861..f9b7a73 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1406,14 +1406,6 @@
 	return prim_list;
 }
 
-static void register_primary_services(DBusConnection *conn,
-				struct btd_device *device, GSList *prim_list)
-{
-	/* TODO: PSM is hardcoded */
-	attrib_client_register(conn, device, 31, NULL, prim_list);
-	device->primaries = g_slist_concat(device->primaries, prim_list);
-}
-
 static void search_cb(sdp_list_t *recs, int err, gpointer user_data)
 {
 	struct browse_req *req = user_data;
@@ -1450,7 +1442,7 @@
 
 		list = primary_from_record(device, req->profiles_added);
 		if (list)
-			register_primary_services(req->conn, device, list);
+			device_register_services(req->conn, device, list, 31);
 	}
 
 	/* Remove drivers for services removed */
@@ -1592,13 +1584,11 @@
 	for (l = services; l; l = l->next) {
 		struct att_primary *prim = l->data;
 		uuids = g_slist_append(uuids, prim->uuid);
-		device_add_primary(device, prim);
 	}
 
 	device_probe_drivers(device, uuids);
 
-	/* FIXME: Need the correct psm */
-	attrib_client_register(req->conn, device, -1, req->attrib, services);
+	device_register_services(req->conn, device, services, -1);
 
 	g_slist_free(uuids);
 
@@ -2354,9 +2344,11 @@
 	device->services = g_slist_append(device->services, g_strdup(path));
 }
 
-void device_add_primary(struct btd_device *device, struct att_primary *prim)
+void device_register_services(DBusConnection *conn, struct btd_device *device,
+						GSList *prim_list, int psm)
 {
-	device->primaries = g_slist_append(device->primaries, prim);
+	attrib_client_register(conn, device, psm, NULL, prim_list);
+	device->primaries = g_slist_concat(device->primaries, prim_list);
 }
 
 GSList *btd_device_get_primaries(struct btd_device *device)
diff --git a/src/device.h b/src/device.h
index 3ce212b..285364f 100644
--- a/src/device.h
+++ b/src/device.h
@@ -25,7 +25,6 @@
 #define DEVICE_INTERFACE	"org.bluez.Device"
 
 struct btd_device;
-struct att_primary;
 
 typedef enum {
 	AUTH_TYPE_PINCODE,
@@ -58,7 +57,8 @@
 						const char *uuid);
 GSList *btd_device_get_primaries(struct btd_device *device);
 void btd_device_add_service(struct btd_device *device, const char *path);
-void device_add_primary(struct btd_device *device, struct att_primary *prim);
+void device_register_services(DBusConnection *conn, struct btd_device *device,
+						GSList *prim_list, int psm);
 void btd_device_add_uuid(struct btd_device *device, const char *uuid);
 struct btd_adapter *device_get_adapter(struct btd_device *device);
 void device_get_address(struct btd_device *device, bdaddr_t *bdaddr);