diff --git a/src/GroovePlayer.cpp b/src/GroovePlayer.cpp
index 3f20b1dbd9a3fd4f566a3280245348c98916cba2..f72fe0aa92ef30c259eca0bfa1b85aae6c9692a3 100644
--- a/src/GroovePlayer.cpp
+++ b/src/GroovePlayer.cpp
@@ -18,8 +18,22 @@
  */
 
 #include "GroovePlayer.h"
+#include "db/User.h"
+#include "db/AudioTrack.h"
+#include "db/UserAction.h"
+#include <Wt/WLogger>
 
-GroovePlayer::GroovePlayer()
+GroovePlayer::GroovePlayer(std::string dbFile) : sqliteConnection(dbFile)
 {
+    sqlSession.setConnection(this->sqliteConnection);
+    sqlSession.mapClass<User>("user");
+    sqlSession.mapClass<AudioTrack>("tracks");
+    sqlSession.mapClass<UserAction>("actions");
+    try
+    {
+        sqlSession.createTables();
+    } catch(Wt::Dbo::Exception e) 
+    {
+        Wt::log("info") << "Using Existing DB.";
+    }
 }
-
diff --git a/src/GroovePlayer.h b/src/GroovePlayer.h
index 35e12333380d3074b54e2d537c7d41e1e740cff2..3dc26eb169205c169350df0ca60c65a9c85981c6 100644
--- a/src/GroovePlayer.h
+++ b/src/GroovePlayer.h
@@ -20,17 +20,22 @@
 #ifndef GROOVEPLAYER_H
 #define GROOVEPLAYER_H
 
+#include <Wt/Dbo/Session>
+#include <Wt/Dbo/backend/Sqlite3>
+
 class GroovePlayer
 {
 public:
     static GroovePlayer* getInstance() {
-        static GroovePlayer instance;
+        static GroovePlayer instance("music.db");
         return &instance;
     };
     GroovePlayer(GroovePlayer const&) = delete;
     void operator=(GroovePlayer const&) = delete;
 private:
-    GroovePlayer();
+    GroovePlayer(std::string dbFile);
+    Wt::Dbo::backend::Sqlite3 sqliteConnection;
+    Wt::Dbo::Session sqlSession;
 };
 
 #endif // GROOVEPLAYER_H
diff --git a/src/db/UserAction.h b/src/db/UserAction.h
index ec18747203514d616372abccc201493e98300d1c..93e5d0bd7565e32120628843580fb24fd7c997d4 100644
--- a/src/db/UserAction.h
+++ b/src/db/UserAction.h
@@ -31,17 +31,17 @@ class UserAction
 public:
     enum UAction {Login = 0, Logout = 1, RequestTrack = 2, VoteTrack = 3, UploadTrack = 4, RequestSkip = 5, Pause = 6};
     
-    User user;
+    Wt::Dbo::ptr<User> user;
     UAction action;
-    AudioTrack trackInvolved;
+    Wt::Dbo::ptr<AudioTrack> trackInvolved;
     Wt::WDateTime datetime;
     
     template<class Action>
     void persist(Action& a)
     {
-        Wt::Dbo::field(a, user, "user");
+        Wt::Dbo::belongsTo(a, user, "user");
         Wt::Dbo::field(a, action, "action");
-        Wt::Dbo::field(a, trackInvolved, "track");
+        Wt::Dbo::belongsTo(a, trackInvolved, "track");
         Wt::Dbo::field(a, datetime, "datetime");
     }