diff --git a/WarpDrinkApi/pom.xml b/WarpDrinkApi/pom.xml
index 1fbc9400b3a11fecfbd8f849b421625828b674c8..fa9c9f23e4283e9e9843acb45c2f7885015a2b4e 100644
--- a/WarpDrinkApi/pom.xml
+++ b/WarpDrinkApi/pom.xml
@@ -40,8 +40,34 @@
 	  	<artifactId>cxf-rt-rs-security-oauth2</artifactId>
 	  	<version>2.7.5</version>
 	</dependency>
+ 	<dependency>
+		<groupId>com.google.code.gson</groupId>
+		<artifactId>gson</artifactId>
+		<version>1.7.1</version>
+	  </dependency>
+	  <dependency>
+			<groupId>com.j256.ormlite</groupId>
+			<artifactId>ormlite-jdbc</artifactId>
+			<version>4.48</version>
+		</dependency>
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>5.1.35</version>
+		</dependency>
+		
+	  
   </dependencies>
   <build>
     <finalName>warpdrink</finalName>
+    <plugins>
+    <plugin>
+      <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.7</source>
+          <target>1.7</target>
+        </configuration>
+    </plugin>
+  </plugins>
   </build>
 </project>
diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Database.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Database.java
new file mode 100644
index 0000000000000000000000000000000000000000..a0f96c74aa7ea9d794f77ed6ce0d60f56d667f8a
--- /dev/null
+++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Database.java
@@ -0,0 +1,37 @@
+package ms.itsecteam.warpdrink;
+
+import java.sql.SQLException;
+
+import com.j256.ormlite.jdbc.JdbcConnectionSource;
+import com.j256.ormlite.support.ConnectionSource;
+
+public class Database {
+	private static Database instance;
+	private ConnectionSource connectionSource;
+
+	private Database() {
+		try {
+			this.connectionSource = new JdbcConnectionSource("jdbc:mysql://localhost/dev","root","");
+			System.out.println(this.connectionSource);
+			System.out.println(this.connectionSource.isOpen());
+		} catch (SQLException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	public static Database getInstance() {
+		if (instance == null) {
+			instance = new Database();
+		}
+		return instance;
+	}
+	
+	
+	public ConnectionSource getConnectionSource() {
+		return connectionSource;
+	}
+
+	public void setConnectionSource(ConnectionSource connectionSource) {
+		this.connectionSource = connectionSource;
+	}
+}
diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Servlet.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Servlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..dfda6b2e7a7ee021a5d3a75356ed13ea71e805c5
--- /dev/null
+++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Servlet.java
@@ -0,0 +1,25 @@
+package ms.itsecteam.warpdrink;
+
+import java.sql.SQLException;
+
+import ms.itsecteam.warpdrink.objects.User;
+
+public class Servlet extends com.sun.jersey.spi.container.servlet.ServletContainer{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	
+	public Servlet() {
+		super();
+		Database.getInstance();
+		try {
+			UserDao.getInstance().saveUser(new User("Hans",3.0));
+		} catch (SQLException e) {
+			e.printStackTrace();
+		}
+	}
+ 
+}
diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/UserDao.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/UserDao.java
new file mode 100644
index 0000000000000000000000000000000000000000..3153563237fffa24bc3bd58c6dee2d06b487a7d1
--- /dev/null
+++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/UserDao.java
@@ -0,0 +1,55 @@
+package ms.itsecteam.warpdrink;
+
+import java.sql.SQLException;
+import java.util.List;
+
+import ms.itsecteam.warpdrink.objects.User;
+
+import com.j256.ormlite.dao.BaseDaoImpl;
+import com.j256.ormlite.dao.Dao;
+import com.j256.ormlite.dao.DaoManager;
+import com.j256.ormlite.support.ConnectionSource;
+import com.j256.ormlite.table.TableUtils;
+
+public class UserDao extends BaseDaoImpl<User, String>{
+	
+	private static UserDao instance;
+	private ConnectionSource connectionSource;
+	private Dao<User, String> userDao;
+	
+	private UserDao() throws SQLException {
+        super(User.class);
+        this.connectionSource = Database.getInstance().getConnectionSource();
+        TableUtils.createTableIfNotExists(this.connectionSource, User.class);
+        this.userDao = DaoManager.createDao(this.connectionSource, User.class); 
+    }
+
+	public static UserDao getInstance() throws SQLException {
+		if (instance == null) {
+			instance = new UserDao();
+		}
+		return instance;
+	}
+	public void saveUser(User user) throws SQLException {
+		this.userDao.createOrUpdate(user);
+	}
+	public List<User> getAllUsers() throws SQLException {
+		return this.userDao.queryForAll();
+	}
+	public User getUser(int userid) throws SQLException {
+		List<User> result = this.userDao.queryForEq("userid", userid);
+		if (!result.isEmpty())
+			return result.get(0);
+		return null;
+	}
+	public User getUser(String name) throws SQLException {
+		List<User> result = this.userDao.queryForEq("name", name);
+		if (!result.isEmpty())
+			return result.get(0);
+		return null;
+	}
+ 
+
+    
+  
+}
\ No newline at end of file
diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/objects/User.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/objects/User.java
index 1efbff197808292460842f88d542e8cab60e29bc..d71008edf5a22ee94e6ac850461a790a04fdc7d6 100644
--- a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/objects/User.java
+++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/objects/User.java
@@ -2,21 +2,28 @@ package ms.itsecteam.warpdrink.objects;
 
 import javax.xml.bind.annotation.XmlRootElement;
 
-@SuppressWarnings("restriction")
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+
 @XmlRootElement
+@DatabaseTable(tableName = "users")
 public class User {
-
+	
+	@DatabaseField(generatedId = true)
     private int userid;
+	
+	@DatabaseField(columnName = "name",unique = true, canBeNull = false)
     private String name;
+	
+	@DatabaseField(columnName = "credit")
     private double credit;
 
     public User() {
         super();
     }
 
-    public User(int userid, String name, double credit) {
+    public User(String name, double credit) {
         super();
-        this.userid = userid;
         this.name = name;
         this.credit = credit;
     }
@@ -48,4 +55,12 @@ public class User {
     public String toString() {
         return "[Name: "+this.name+", Credit:"+this.credit+"]";
     }
+    
+	@Override
+	public boolean equals(Object other) {
+		if (other == null || other.getClass() != getClass()) {
+			return false;
+		}
+		return name.equals(((User) other).name);
+	}
 }
diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/provider/UserProvider.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/provider/UserProvider.java
index 841f45fbf7ffd3ea350047f29c9496b6d27fb80d..c04259f3ff26fb520aa6e3a422d1f3938f87baa8 100644
--- a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/provider/UserProvider.java
+++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/provider/UserProvider.java
@@ -1,29 +1,73 @@
 package ms.itsecteam.warpdrink.provider;
 
-import java.util.ArrayList;
+import java.sql.SQLException;
 import java.util.List;
 
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
 
+import com.google.gson.Gson;
+
+import ms.itsecteam.warpdrink.UserDao;
 import ms.itsecteam.warpdrink.objects.User;
 
 @Path("user")
 public class UserProvider {
+	List<User> users;
+	
+	public UserProvider() {
+		try {
+			users = UserDao.getInstance().getAllUsers();
+		} catch (SQLException e) {
+			e.printStackTrace();
+		}
+	}
+  
   @GET
   @Path("/all")
   @Produces(MediaType.APPLICATION_JSON)
-  public List<User> getUsers() {
-	  List<User> users = new ArrayList<User>();
-	  users.add(new User(1,"Hugo",1.0));
-	  users.add(new User(2,"Frank",0.5));
-	  users.add(new User(3,"Martin",0.5));
-	  return users;
+  public String getUsers() {
+	  List<User> users;
+	  try {
+		  users = UserDao.getInstance().getAllUsers();
+		  if(users != null){
+			  return new Gson().toJson(users,users.getClass());
+		  }
+	  } catch (SQLException e) {
+		e.printStackTrace();
+	  }
+	  return "";
   }
+  
   @GET
   @Path("/{userid}")
   @Produces(MediaType.APPLICATION_JSON)
   public User getUser(@PathParam("userid") int userid) {
-	  return new User(userid,"Hugo",1.0);
+		try {
+			return UserDao.getInstance().getUser(userid);
+		} catch (SQLException e) {
+			e.printStackTrace();
+		}
+		return null;
+  }
+  
+  @POST
+  @Path("/{userid}")
+  @Produces(MediaType.APPLICATION_JSON)
+  public void setUser(@PathParam("userid") int userid, @FormParam("credit") double credit) throws SQLException {
+	  User user = UserDao.getInstance().getUser(userid);
+	  user.setCredit(credit);
+	  UserDao.getInstance().saveUser(user);
+  }
+  @PUT
+  @Path("/create")
+  @Produces(MediaType.APPLICATION_JSON)
+  public User createUser(@FormParam("name") String name) throws SQLException {
+	  if(UserDao.getInstance().getUser(name) == null){
+		  User user = new User(name,0.0);
+		  UserDao.getInstance().saveUser(user);
+		  return user;
+	  }
+	  return null;
   }
 }
\ No newline at end of file
diff --git a/WarpDrinkApi/src/main/webapp/WEB-INF/web.out.xml b/WarpDrinkApi/src/main/webapp/WEB-INF/web.out.xml
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/WarpDrinkApi/src/main/webapp/WEB-INF/web.xml b/WarpDrinkApi/src/main/webapp/WEB-INF/web.xml
index bf12269c8afbb340c1c8a43270b8252f2c0fec97..8f6bce9c95f147228f51106f850405e2921d0a3f 100644
--- a/WarpDrinkApi/src/main/webapp/WEB-INF/web.xml
+++ b/WarpDrinkApi/src/main/webapp/WEB-INF/web.xml
@@ -5,7 +5,7 @@
 <web-app>
 <servlet>
     <servlet-name>REST Service</servlet-name>
-    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
+    <servlet-class>ms.itsecteam.warpdrink.Servlet</servlet-class>
     <init-param>
         <param-name>com.sun.jersey.config.property.packages</param-name>
         <param-value>ms.itsecteam.warpdrink.provider</param-value>
diff --git a/WarpDrinkApp/.idea/gradle.xml b/WarpDrinkApp/.idea/gradle.xml
index 3068cd46130b45ab8c104d36ca53362763d3744f..3ec595561ecd27655f5f272d50e9a438d7dccb62 100644
--- a/WarpDrinkApp/.idea/gradle.xml
+++ b/WarpDrinkApp/.idea/gradle.xml
@@ -5,8 +5,8 @@
       <GradleProjectSettings>
         <option name="distributionType" value="LOCAL" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
-        <option name="gradleHome" value="C:\Program Files\Android\Android Studio\gradle\gradle-2.2.1" />
-        <option name="gradleJvm" value="1.8" />
+        <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-2.2.1" />
+        <option name="gradleJvm" value="1.7" />
         <option name="modules">
           <set>
             <option value="$PROJECT_DIR$" />
diff --git a/WarpDrinkApp/.idea/misc.xml b/WarpDrinkApp/.idea/misc.xml
index e284b1d433234d5d0047f8cff997cafe74fb0312..f6607a52de32e22ad8d42fadbe325aa1851b208d 100644
--- a/WarpDrinkApp/.idea/misc.xml
+++ b/WarpDrinkApp/.idea/misc.xml
@@ -13,7 +13,7 @@
     <ConfirmationsSetting value="0" id="Add" />
     <ConfirmationsSetting value="0" id="Remove" />
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="false" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">
diff --git a/WarpDrinkApp/.idea/vcs.xml b/WarpDrinkApp/.idea/vcs.xml
index 6c0b8635858dc7ad44b93df54b762707ce49eefc..6564d52db279c4ae8d882aacf5aa89a85e7a04de 100644
--- a/WarpDrinkApp/.idea/vcs.xml
+++ b/WarpDrinkApp/.idea/vcs.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+    <mapping directory="" vcs="" />
   </component>
 </project>
\ No newline at end of file
diff --git a/WarpDrinkApp/app/app.iml b/WarpDrinkApp/app/app.iml
index fbe226fa96e6d5a622940a930abd45b518e8fb56..89bc1db1ddbfd80533e40dcdccf31c7aee452b8e 100644
--- a/WarpDrinkApp/app/app.iml
+++ b/WarpDrinkApp/app/app.iml
@@ -86,19 +86,20 @@
       <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
       <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
     </content>
-    <orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />
+    <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" exported="" name="codepath-oauth-0.4.1" level="project" />
     <orderEntry type="library" exported="" name="scribe-codepath-0.0.3" level="project" />
     <orderEntry type="library" exported="" name="activeandroid-3.0" level="project" />
-    <orderEntry type="library" exported="" name="codepath-utils" level="project" />
-    <orderEntry type="library" exported="" name="jackson-databind-2.0.1" level="project" />
     <orderEntry type="library" exported="" name="jackson-core-2.0.1" level="project" />
-    <orderEntry type="library" exported="" name="jackson-annotations-2.0.1" level="project" />
     <orderEntry type="library" exported="" name="support-annotations-22.2.0" level="project" />
     <orderEntry type="library" exported="" name="support-v4-22.2.0" level="project" />
     <orderEntry type="library" exported="" name="spring-android-rest-template-1.0.1.RELEASE" level="project" />
-    <orderEntry type="library" exported="" name="spring-android-core-1.0.1.RELEASE" level="project" />
     <orderEntry type="library" exported="" name="appcompat-v7-22.2.0" level="project" />
+    <orderEntry type="library" exported="" name="gson-1.7.2" level="project" />
+    <orderEntry type="library" exported="" name="codepath-utils" level="project" />
+    <orderEntry type="library" exported="" name="jackson-databind-2.0.1" level="project" />
+    <orderEntry type="library" exported="" name="httpclient-android-4.3.5.1" level="project" />
+    <orderEntry type="library" exported="" name="jackson-annotations-2.0.1" level="project" />
+    <orderEntry type="library" exported="" name="spring-android-core-1.0.1.RELEASE" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/WarpDrinkApp/app/build.gradle b/WarpDrinkApp/app/build.gradle
index 01399bd06f3d4e647b78f41795910b12062029d2..e2b6e480d2716d4b1bdb9c3b3fa3fca4c8b4d78b 100644
--- a/WarpDrinkApp/app/build.gradle
+++ b/WarpDrinkApp/app/build.gradle
@@ -1,8 +1,8 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 22
-    buildToolsVersion "23.0.0 rc2"
+    compileSdkVersion 21
+    buildToolsVersion '23.0.0 rc2'
 
     defaultConfig {
         applicationId "ms.itsecteam.warpdrink"
@@ -28,8 +28,11 @@ android {
 }
 
 dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
+    compile fileTree(include: ['*.jar'], dir: 'libs')
     compile 'com.android.support:appcompat-v7:22.2.0'
     compile 'com.fasterxml.jackson.core:jackson-databind:2.0.1'
     compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'
+    compile 'com.google.code.gson:gson:1.7.2'
+    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
+
 }
diff --git a/WarpDrinkApp/app/libs/codepath-oauth-0.4.1.jar b/WarpDrinkApp/app/libs/codepath-oauth-0.4.1.jar
deleted file mode 100644
index 9b92c0a1451d8b4c3d4d7395f9020a1187218fa5..0000000000000000000000000000000000000000
Binary files a/WarpDrinkApp/app/libs/codepath-oauth-0.4.1.jar and /dev/null differ
diff --git a/WarpDrinkApp/app/src/main/AndroidManifest.xml b/WarpDrinkApp/app/src/main/AndroidManifest.xml
index 93792b685de7c421a58f6e8d6fe95a979522be2f..4e628c489d480c19bb97cd1851a6c3af686fae61 100644
--- a/WarpDrinkApp/app/src/main/AndroidManifest.xml
+++ b/WarpDrinkApp/app/src/main/AndroidManifest.xml
@@ -14,7 +14,7 @@
         <meta-data android:name="AA_DB_VERSION" android:value="5" />
         <meta-data
             android:name="AA_MODELS"
-            android:value="ms.itsecteam.warpdrink.data.User" />
+            android:value="ms.itsecteam.warpdrink.data.objects.User" />
         <activity
             android:name=".MainActivity"
             android:label="@string/app_name"
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java
index 118683b97148ce34a08bdc48900bf58d5ae61d2f..d831c3efa6f2e61d75d94654eb139c545754f04f 100644
--- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java
@@ -2,8 +2,10 @@ package ms.itsecteam.warpdrink;
 
 import android.app.AlertDialog;
 import android.content.DialogInterface;
+import android.provider.ContactsContract;
 import android.support.v7.app.ActionBarActivity;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.KeyEvent;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -19,11 +21,12 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.ListIterator;
 
 import ms.itsecteam.warpdrink.data.DataApi;
-import ms.itsecteam.warpdrink.data.RestClient;
+import ms.itsecteam.warpdrink.data.rest.RestClient;
 import ms.itsecteam.warpdrink.data.objects.User;
 import ms.itsecteam.warpdrink.dialogs.ChargeDialog;
 import ms.itsecteam.warpdrink.dialogs.NewUserDialog;
@@ -51,12 +54,6 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        User.deleteAll();
-        new User(2, "hans", 100.0).save();
-        new User(3, "meier", 10.0).save();
-        new User(3, "merten", 1.0).save();
-        new User(4, "dieter", 1.0).save();
-        new User(5, "detlef", 0.5).save();
 
         getWindow().addFlags(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
         setContentView(R.layout.activity_main);
@@ -76,8 +73,9 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe
         this.lstOrdered = (ListView) findViewById(R.id.lstOrdered);
         this.lstOrdered.setAdapter(this.lstAdapter);
 
+
         this.users = User.getAll();
-        this.atxvAdapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, users);
+        this.atxvAdapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, this.users);
 
         this.atxvName = (AutoCompleteTextView) findViewById(R.id.atxvName);
         this.atxvName.setAdapter(atxvAdapter);
@@ -88,8 +86,9 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe
         this.btnLogout.setVisibility(View.INVISIBLE);
         this.enableControls(false);
 
-        RestClient restClient = RestClient.getInstance();
-        restClient.getUser();
+
+        DataApi.getInstance().refreshUserData();
+
     }
 
     private void setCurrentUser(User user) {
@@ -195,7 +194,8 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe
                 new NewUserDialog(this).show();
                 break;
             case R.id.btnRefresh:
-                Toast.makeText(this,"refresh"  ,Toast.LENGTH_LONG).show();
+                DataApi.getInstance().refreshUserData();
+                Toast.makeText(this,"Refresh successful"  ,Toast.LENGTH_LONG).show();
                 break;
         }
     }
@@ -204,11 +204,10 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe
     public boolean onKey(View v, int keyCode, KeyEvent event) {
         if (event.getAction()==KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
            if(this.atxvAdapter.getCount() == 1) {
-               setCurrentUser((User) this.atxvAdapter.getItem(0));
+               setCurrentUser(DataApi.getInstance().remoteGetUser(((User) this.atxvAdapter.getItem(0)).getUserid()));
                this.atxvName.setText(this.atxvAdapter.getItem(0).toString());
+               this.atxvName.dismissDropDown();
            }
-
-           setCurrentUser(User.getByName(this.atxvName.getText().toString()));
            return true;
         }
         return false;
@@ -216,13 +215,14 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe
 
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-        setCurrentUser((User) this.atxvAdapter.getItem(position));
+        setCurrentUser(DataApi.getInstance().remoteGetUser(((User) this.atxvAdapter.getItem(position)).getUserid()));
     }
 
     @Override
     public void onClick(DialogInterface dialog, int which) {
-        this.currentUser.setCredit(this.currentUser.getCredit()-this.getTotal());
+        this.currentUser.setCredit(this.currentUser.getCredit() - this.getTotal());
         this.currentUser.save();
+        RestClient.getInstance().saveUserCredit(this.currentUser);
         this.clearCurrentUser();
     }
     public boolean onOptionsItemSelected(MenuItem item) {
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/DataApi.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/DataApi.java
index 22a909e9475c1f16540402df6b3fd91aaf9396e0..d5ca1bc7cb6c5259695c498b0d2ff9e0ad18ea28 100644
--- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/DataApi.java
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/DataApi.java
@@ -2,9 +2,12 @@ package ms.itsecteam.warpdrink.data;
 
 import android.util.Log;
 import java.util.Arrays;
+import java.util.List;
+import java.util.ListIterator;
 
 import ms.itsecteam.warpdrink.MainActivity;
 import ms.itsecteam.warpdrink.data.objects.User;
+import ms.itsecteam.warpdrink.data.rest.RestClient;
 
 public class DataApi {
 
@@ -31,24 +34,29 @@ public class DataApi {
         if(User.getByName(name) == null) {
             User u = new User();
             u.setName(name);
-            u.save();
-            remoteSaveNewUser(u);
-            localRefreshUserData();
+            RestClient.getInstance().createUser(u);
+            //u.save();
+            refreshUserData();
             return true;
         }
         return false;
     }
 
-    public void localRefreshUserData() {
-        Log.d("App", Arrays.toString(User.getAll().toArray()));
+    public void refreshUserData() {
+        List<User> u = RestClient.getInstance().getAllUser();
+        if(u == null)
+            return;
+        User.deleteAll();
+        ListIterator<User> ui = u.listIterator();
+        while(ui.hasNext()) {
+            ui.next().save();
+        }
+        Log.d("App", Arrays.toString(u.toArray()));
         mainActivity.refreshUsers();
     }
 
-    private boolean remoteSaveNewUser(User u) {
-        return true;
-    }
 
     public User remoteGetUser(int userid) {
-        return new User();
+        return RestClient.getInstance().getUser(userid);
     }
 }
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestClient.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestClient.java
deleted file mode 100644
index bce08f6ee3fca4cd552ccac183311ede64a2aaed..0000000000000000000000000000000000000000
--- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestClient.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package ms.itsecteam.warpdrink.data;
-
-import android.os.AsyncTask;
-import android.util.Log;
-
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.web.client.RestTemplate;
-
-import ms.itsecteam.warpdrink.MainActivity;
-import ms.itsecteam.warpdrink.data.objects.User;
-
-public class RestClient {
-
-    private static RestClient instance;
-    private MainActivity mainActivity;
-    private RestClient() {}
-
-    public static RestClient getInstance () {
-        if (RestClient.instance == null) {
-            RestClient.instance = new RestClient();
-        }
-        return RestClient.instance;
-    }
-
-    public MainActivity getMainActivity() {
-        return mainActivity;
-    }
-
-    public void setMainActivity(MainActivity mainActivity) {
-        this.mainActivity = mainActivity;
-    }
-
-    public void getUser() {
-        new HttpRequestTask<User>().initTask("user/4",User.class).execute();
-    }
-
-    private class HttpRequestTask<T> extends AsyncTask<Object, Void, T> {
-        String url;
-        Class<T> clazz;
-        public HttpRequestTask initTask(String url, Class<T> clazz) {
-            this.url = "http://10.0.2.2:8080/warpdrink/rest/";
-
-            this.url += url;
-            this.clazz=clazz;
-            return this;
-        }
-        @Override
-        protected T doInBackground(Object... params) {
-            try {
-                RestTemplate restTemplate = new RestTemplate();
-                restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
-                T ret = restTemplate.getForObject(this.url, clazz);
-
-                return ret;
-            } catch (Exception e) {
-                Log.e("MainActivity", e.getMessage(), e);
-            }
-
-            return null;
-        }
-
-        @Override
-        protected void onPostExecute(T result) {
-            Log.e("MainActivity", ((User) result).getName());
-        }
-
-    }
-
-}
-
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java
index 2ae4ad1b5305bd023b514d365c87d02865817d44..46efb14fb386a794f268bbde1da03126514ebfa5 100644
--- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java
@@ -8,7 +8,7 @@ import com.activeandroid.query.Select;
 
 import java.util.List;
 
-@Table(name = "Users")
+@Table(name = "Settings")
 public class Setting extends Model {
 
     @Column(name = "key")
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java
index ed159e1b4795de60b2118d80198d55814e627801..764f3814cf3dfa85a06758909e788282086f50fb 100644
--- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java
@@ -13,11 +13,13 @@ public class User extends Model {
 
     @Column(name = "userid")
     private int userid;
-    @Column(name = "name")
-    private String name;
+
     @Column(name = "credit")
     private double credit;
 
+    @Column(name = "name")
+    private String name;
+
     public User() {
         super();
     }
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java
new file mode 100644
index 0000000000000000000000000000000000000000..565853cf8990479a18cecc68026efdd0ac34f81c
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java
@@ -0,0 +1,37 @@
+package ms.itsecteam.warpdrink.data.rest;
+
+import android.os.AsyncTask;
+import android.util.Log;
+
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.client.RestTemplate;
+
+public class RequestSingleObject<T> extends AsyncTask<Object, Void, T> {
+    String url;
+    Class<T> clazz;
+    public RequestSingleObject initTask(String url, Class<T> clazz) {
+        this.url = "http://10.0.2.2:8080/warpdrink/rest/";
+
+        this.url += url;
+        this.clazz=clazz;
+        return this;
+    }
+    @Override
+    protected T doInBackground(Object... params) {
+        try {
+            RestTemplate restTemplate = new RestTemplate();
+            restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
+            T ret = restTemplate.getForObject(this.url, clazz);
+
+            return ret;
+        } catch (Exception e) {
+            Log.e("MainActivity", e.getMessage(), e);
+        }
+
+        return null;
+    }
+
+    @Override
+    protected void onPostExecute(T result) { }
+
+}
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java
new file mode 100644
index 0000000000000000000000000000000000000000..4338dfecdae5efe9f3d16eda1ebcb56d11b7f37c
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java
@@ -0,0 +1,50 @@
+package ms.itsecteam.warpdrink.data.rest;
+
+import android.os.AsyncTask;
+import android.util.Log;
+
+import com.google.gson.Gson;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+
+import ms.itsecteam.warpdrink.data.objects.User;
+
+public class RequestUserList extends AsyncTask<Object, Void, List<User>> {
+    String url;
+    public RequestUserList initTask(String url) {
+        this.url = "http://10.0.2.2:8080/warpdrink/rest/";
+        this.url += url;
+        return this;
+    }
+    @Override
+    protected List<User> doInBackground(Object... params) {
+        User[] x;
+        try {
+            String line;
+            String response="";
+            OutputStreamWriter writer;
+            BufferedReader reader;
+            HttpURLConnection conn;
+            try {
+                conn =  (HttpURLConnection) new URL(this.url).openConnection();
+                conn.setDoOutput(true);
+                reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+                while ((line = reader.readLine()) != null) { response += line; }
+                Log.d("TV",response);
+                x = new Gson().fromJson(response, User[].class);
+                reader.close();
+                return Arrays.asList(x);
+            } catch (Exception e) { Log.d("TV",e.toString()); }
+        } catch (Exception e) {
+            Log.e("MainActivity", e.getMessage(), e);
+        }
+        return null;
+    }
+
+}
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed89a3f69d03176cebeaf8564ad4977c2562f339
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java
@@ -0,0 +1,76 @@
+package ms.itsecteam.warpdrink.data.rest;
+
+import android.util.Log;
+
+import com.google.gson.Gson;
+
+import org.apache.http.NameValuePair;
+import org.apache.http.message.BasicNameValuePair;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import ms.itsecteam.warpdrink.MainActivity;
+import ms.itsecteam.warpdrink.data.objects.User;
+import ms.itsecteam.warpdrink.data.rest.http.HttpGetRequest;
+import ms.itsecteam.warpdrink.data.rest.http.HttpPostRequest;
+import ms.itsecteam.warpdrink.data.rest.http.HttpPutRequest;
+
+public class RestClient {
+
+    private static RestClient instance;
+    private MainActivity mainActivity;
+    private RestClient() {}
+
+    public static RestClient getInstance () {
+        if (RestClient.instance == null) {
+            RestClient.instance = new RestClient();
+        }
+        return RestClient.instance;
+    }
+
+    public User getUser(int userid) {
+        try {
+            User u = (User) new RequestSingleObject<User>().initTask("user/"+userid,User.class).execute().get();
+            Log.d("TV",u.getName());
+            return u;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+    public List<User> getAllUser() {
+        try {
+            String response = new HttpGetRequest().initTask("user/all").execute().get();
+            return Arrays.asList(new Gson().fromJson(response, User[].class));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+    public void saveUserCredit(User u) {
+        List<NameValuePair> postParams = new ArrayList<NameValuePair>(2);
+        postParams.add(new BasicNameValuePair("credit", String.valueOf(u.getCredit())));
+        new HttpPostRequest().initTask("/user/"+u.getUserid(),postParams).execute();
+    }
+    public boolean createUser(User u) {
+        List<NameValuePair> postParams = new ArrayList<NameValuePair>(2);
+        postParams.add(new BasicNameValuePair("name", u.getName()));
+        try {
+            String response = new HttpPutRequest().initTask("/user/create",postParams).execute().get();
+            if(response != "") {
+                u = new Gson().fromJson(response, User.class);
+                if(u.getUserid() != 0) {
+                    u.save();
+                    return true;
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+}
+
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..a5ab9ba99d38c253229c22b8f1a1a1844e56f899
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java
@@ -0,0 +1,42 @@
+package ms.itsecteam.warpdrink.data.rest.http;
+
+import android.os.AsyncTask;
+import android.util.Log;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+public class HttpGetRequest extends AsyncTask<Void, Void, String> {
+    String url;
+    public HttpGetRequest initTask(String url) {
+        this.url = "http://10.0.2.2:8080/warpdrink/rest/";
+        this.url += url;
+        return this;
+    }
+    @Override
+    protected String doInBackground(Void... params) {
+        try {
+            HttpClient client = new DefaultHttpClient();
+            HttpGet request = new HttpGet(this.url);
+
+            HttpResponse response = client.execute(request);
+            BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
+
+            String line = "";
+            String responsestr="";
+            while ((line = rd.readLine()) != null) {
+                responsestr += line;
+            }
+            return responsestr;
+        } catch (Exception e) {
+            Log.e("MainActivity", e.getMessage(), e);
+        }
+        return null;
+    }
+
+}
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8150020a164a6410966e53390b3879e41ca7532a
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java
@@ -0,0 +1,49 @@
+package ms.itsecteam.warpdrink.data.rest.http;
+
+import android.os.AsyncTask;
+import android.util.Log;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.DefaultHttpClient;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.List;
+
+public class HttpPostRequest extends AsyncTask<Void, Void, String> {
+    String url;
+    List<NameValuePair> postParams;
+    public HttpPostRequest initTask(String url, List<NameValuePair> postParams) {
+        this.url = "http://10.0.2.2:8080/warpdrink/rest/";
+        this.url += url;
+        this.postParams =postParams;
+        return this;
+    }
+    @Override
+    protected String doInBackground(Void... params) {
+        try {
+            HttpClient client = new DefaultHttpClient();
+            HttpPost request = new HttpPost(this.url);
+
+            request.setEntity(new UrlEncodedFormEntity(this.postParams, "UTF-8"));
+
+            HttpResponse response = client.execute(request);
+            BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
+
+            String line = "";
+            String responsestr="";
+            while ((line = rd.readLine()) != null) {
+                responsestr += line;
+            }
+            return responsestr;
+        } catch (Exception e) {
+            Log.e("MainActivity", e.getMessage(), e);
+        }
+        return null;
+    }
+
+}
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b0dcd7bba4ce96700434bb5b7cdf9deb8a40f574
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java
@@ -0,0 +1,49 @@
+package ms.itsecteam.warpdrink.data.rest.http;
+
+import android.os.AsyncTask;
+import android.util.Log;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.impl.client.DefaultHttpClient;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.List;
+
+public class HttpPutRequest extends AsyncTask<Void, Void, String> {
+    String url;
+    List<NameValuePair> postParams;
+    public HttpPutRequest initTask(String url, List<NameValuePair> postParams) {
+        this.url = "http://10.0.2.2:8080/warpdrink/rest/";
+        this.url += url;
+        this.postParams =postParams;
+        return this;
+    }
+    @Override
+    protected String doInBackground(Void... params) {
+        try {
+            HttpClient client = new DefaultHttpClient();
+            HttpPut request = new HttpPut(this.url);
+
+            request.setEntity(new UrlEncodedFormEntity(this.postParams, "UTF-8"));
+
+            HttpResponse response = client.execute(request);
+            BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
+
+            String line = "";
+            String responsestr="";
+            while ((line = rd.readLine()) != null) {
+                responsestr += line;
+            }
+            return responsestr;
+        } catch (Exception e) {
+            Log.e("MainActivity", e.getMessage(), e);
+        }
+        return null;
+    }
+
+}
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java
index b4fcc7f807ffe27bb97d38a9143b55766593541d..08a3f4996920c2019214cbc0841b6fbaa6e7f30e 100644
--- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java
@@ -10,6 +10,7 @@ import android.widget.NumberPicker;
 import ms.itsecteam.warpdrink.MainActivity;
 import ms.itsecteam.warpdrink.R;
 import ms.itsecteam.warpdrink.data.objects.User;
+import ms.itsecteam.warpdrink.data.rest.RestClient;
 
 public class ChargeCustomDialog extends Dialog implements
         View.OnClickListener {
@@ -53,6 +54,7 @@ public class ChargeCustomDialog extends Dialog implements
             User u = this.c.getCurrentUser();
             u.setCredit(u.getCredit()+amount);
             u.save();
+            RestClient.getInstance().saveUserCredit(u);
         }
         this.c.refreshCreditTextView();
         dismiss();
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java
index 589a6f5b772c2e6dd10fc2c1c35163a2f10877aa..54369352e5a279bff12ca95a9a3875a9a47e5a5c 100644
--- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java
@@ -9,6 +9,7 @@ import android.widget.Button;
 import ms.itsecteam.warpdrink.MainActivity;
 import ms.itsecteam.warpdrink.R;
 import ms.itsecteam.warpdrink.data.objects.User;
+import ms.itsecteam.warpdrink.data.rest.RestClient;
 
 public class ChargeDialog extends Dialog implements
         android.view.View.OnClickListener {
@@ -62,6 +63,7 @@ public class ChargeDialog extends Dialog implements
             User u = this.c.getCurrentUser();
             u.setCredit(u.getCredit()+amount);
             u.save();
+            RestClient.getInstance().saveUserCredit(u);
         }
         this.c.refreshCreditTextView();
         dismiss();
diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java
index aaaf347e95ca10b859112ed79c9b998cdb6db950..6f0751d45b0eb6da68d0730bb71d78477e5be249 100644
--- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java
@@ -11,6 +11,7 @@ import android.widget.Toast;
 import ms.itsecteam.warpdrink.MainActivity;
 import ms.itsecteam.warpdrink.R;
 import ms.itsecteam.warpdrink.data.DataApi;
+import ms.itsecteam.warpdrink.data.rest.RestClient;
 
 public class NewUserDialog extends Dialog implements
         View.OnClickListener {
diff --git a/WarpDrinkApp/build.gradle b/WarpDrinkApp/build.gradle
index 9405f3fd18bcf39eb1a80a741cfd2ad0bc01d2b0..79381f11929dbbed7d73df61d078f18bb4848556 100644
--- a/WarpDrinkApp/build.gradle
+++ b/WarpDrinkApp/build.gradle
@@ -1,5 +1,4 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
-
 buildscript {
     repositories {
         jcenter()
@@ -11,9 +10,11 @@ buildscript {
         // in the individual module build.gradle files
     }
 }
-
 allprojects {
     repositories {
         jcenter()
     }
 }
+
+dependencies {
+}
\ No newline at end of file