rewrite db backend
diff --git a/include/openbsc/db.h b/include/openbsc/db.h
index 9501ec8..d102dfe 100644
--- a/include/openbsc/db.h
+++ b/include/openbsc/db.h
@@ -20,27 +20,17 @@
 #ifndef _DB_H
 #define _DB_H
 
-#include <stdint.h>
+#include <sys/types.h>
 
-#define NUMBER_LENGTH 32
-
-typedef struct {
-    uint64_t imsi;
-    uint64_t tmsi;
-    char number[NUMBER_LENGTH];
-    uint16_t lac;
-} db_subscriber;
+#include <openbsc/gsm_subscriber.h>
 
 int db_init();
 int db_prepare();
 int db_fini();
 
-int db_insert_imei(uint64_t imei);
-
-int db_insert_imsi(uint64_t imsi);
-int db_imsi_set_tmsi(uint64_t imsi, uint64_t tmsi);
-int db_imsi_set_lac(uint64_t imsi, uint16_t lac);
-int db_imsi_get_subscriber(uint64_t imsi, db_subscriber* subscriber);
-int db_tmsi_get_subscriber(uint64_t tmsi, db_subscriber* subscriber);
+struct gsm_subscriber* db_create_subscriber(char imsi[GSM_IMSI_LENGTH]);
+int db_get_subscriber(enum gsm_subscriber_field field, struct gsm_subscriber* subscriber);
+int db_set_subscriber(struct gsm_subscriber* subscriber);
+int db_subscriber_alloc_tmsi(struct gsm_subscriber* subscriber);
 
 #endif /* _DB_H */