diff --git a/admin/ajax/creategroup.php b/admin/ajax/creategroup.php
index ab99d2a5bee0ec14b6f9fccaaffc2044935d77b8..bfa4099b8899436b39db16a5900f8d0eba413d8e 100644
--- a/admin/ajax/creategroup.php
+++ b/admin/ajax/creategroup.php
@@ -12,23 +12,14 @@ if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin'
 	exit();
 }
 
-$groups = array();
-if( isset( $_POST["groups"] )){
-	$groups = $_POST["groups"];
-}
-$username = $_POST["username"];
-$password = $_POST["password"];
-
-foreach( $groups as $i ){
-	OC_GROUP::addToGroup( $username, $i );
-}
+$name = $_POST["groupname"];
 
 // Return Success story
-if( OC_USER::createUser( $username, $password )){
-	echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", $groups ))));
+if( OC_GROUP::createGroup( $name )){
+	echo json_encode( array( "status" => "success", "data" => array( "groupname" => $name )));
 }
 else{
-	echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add user" )));
+	echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add group" )));
 }
 
 ?>
diff --git a/admin/ajax/createuser.php b/admin/ajax/createuser.php
index ab99d2a5bee0ec14b6f9fccaaffc2044935d77b8..4aa082a25e683725f563cf4ace597792c6163982 100644
--- a/admin/ajax/createuser.php
+++ b/admin/ajax/createuser.php
@@ -19,12 +19,11 @@ if( isset( $_POST["groups"] )){
 $username = $_POST["username"];
 $password = $_POST["password"];
 
-foreach( $groups as $i ){
-	OC_GROUP::addToGroup( $username, $i );
-}
-
 // Return Success story
 if( OC_USER::createUser( $username, $password )){
+	foreach( $groups as $i ){
+		OC_GROUP::addToGroup( $username, $i );
+	}
 	echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", $groups ))));
 }
 else{
diff --git a/admin/ajax/removegroup.php b/admin/ajax/removegroup.php
new file mode 100644
index 0000000000000000000000000000000000000000..c7991ba5819ca81d5b470edca56b9fc28f925f5d
--- /dev/null
+++ b/admin/ajax/removegroup.php
@@ -0,0 +1,25 @@
+<?php
+
+// Init owncloud
+require_once('../../lib/base.php');
+
+// We send json data
+header( "Content-Type: application/jsonrequest" );
+
+// Check if we are a user
+if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){
+	echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" )));
+	exit();
+}
+
+$name = $_POST["groupname"];
+
+// Return Success story
+if( OC_GROUP::deleteGroup( $name )){
+	echo json_encode( array( "status" => "success", "data" => array( "groupname" => $name )));
+}
+else{
+	echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete group" )));
+}
+
+?>
diff --git a/admin/ajax/removeuser.php b/admin/ajax/removeuser.php
new file mode 100644
index 0000000000000000000000000000000000000000..12a27fff58d28c24b0ce56fa6d798076a2b70ea7
--- /dev/null
+++ b/admin/ajax/removeuser.php
@@ -0,0 +1,25 @@
+<?php
+
+// Init owncloud
+require_once('../../lib/base.php');
+
+// We send json data
+header( "Content-Type: application/jsonrequest" );
+
+// Check if we are a user
+if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){
+	echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" )));
+	exit();
+}
+
+$name = $_POST["username"];
+
+// Return Success story
+if( OC_USER::deleteUser( $name )){
+	echo json_encode( array( "status" => "success", "data" => array( "username" => $name )));
+}
+else{
+	echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete user" )));
+}
+
+?>
diff --git a/admin/js/users.js b/admin/js/users.js
index 0713cf8e5dcb8bc12ef149fdd980a347753734b9..7cd1ed6f6243c230b8677e8013e0e0e72b0c9a94 100644
--- a/admin/js/users.js
+++ b/admin/js/users.js
@@ -12,10 +12,15 @@ $(document).ready(function(){
 			"Create an account": function() {
 				var post = $( "#createuserdata" ).serialize();
 				$.post( 'ajax/createuser.php', post, function(data){
-					var newrow = '<tr><td>' + data.data.username + '</td>';
-					newrow = newrow + '<td>' + data.data.groups + '</td>';
-					newrow = newrow + '<td><a href="" class="edituser-button">edit</a> | <a  class="removeuser-button" href="">remove</a></td></tr>';
-					$("#userstable").append( newrow  );
+					if( data.status == "success" ){
+						var newrow = '<tr><td>' + data.data.username + '</td>';
+						newrow = newrow + '<td>' + data.data.groups + '</td>';
+						newrow = newrow + '<td><a href="" class="edituser-button">edit</a> | <a  class="removeuser-button" href="">remove</a></td></tr>';
+						$("#userstable").append( newrow  );
+					}
+					else{
+						alert( "Bug By Jakob (c)" );
+					}
 				});
 				$( this ).dialog( "close" );
 			},
@@ -61,7 +66,7 @@ $(document).ready(function(){
 			return false;
 		});
 
-	// Dialog for adding users
+	// Removing users
 	$( "#removeuser-form" ).dialog({
 		autoOpen: false,
 		height: 300,
@@ -69,6 +74,15 @@ $(document).ready(function(){
 		modal: true,
 		buttons: {
 			"Remove user": function() {
+				var post = $( "#removeuserdata" ).serialize();
+				$.post( 'ajax/removeuser.php', post, function(data){
+					if( data.status == "success" ){
+						$( "a[x-uid='"+uid+"']" ).parent().remove();
+					}
+					else{
+						alert( "Bug By Jakob (c)" );
+					}
+				});
 				$( this ).dialog( "close" );
 			},
 			Cancel: function() {
@@ -76,7 +90,7 @@ $(document).ready(function(){
 			}
 		},
 		close: function() {
-			allFields.val( "" ).removeClass( "ui-state-error" );
+			true;
 		}
 	});
 
@@ -84,10 +98,28 @@ $(document).ready(function(){
 		.click(function() {
 			uid = $( this ).parent().attr( 'x-uid' );
 			$("#deleteuserusername").html(uid);
+			$("#deleteusernamefield").val(uid);
 			$( "#removeuser-form" ).dialog( "open" );
 			return false;
 		});
 
+	// Add a group
+	$( "#creategroupbutton" )
+		.click(function(){
+			var post = $( "#creategroupdata" ).serialize();
+			$.post( 'ajax/creategroup.php', post, function(data){
+				if( data.status == "success" ){
+					var newrow = '<tr><td>' + data.data.groupname + '</td>';
+					newrow = newrow + '<td><a class="removegroup-button" href="">remove</a></td></tr>';
+					$("#groupstable").append( newrow  );
+				}
+				else{
+					alert( "something went wrong! sorry!" );
+				}
+			});
+			return false;
+		});
+
 	// Dialog for adding users
 	$( "#removegroup-form" ).dialog({
 		autoOpen: false,
@@ -96,9 +128,14 @@ $(document).ready(function(){
 		modal: true,
 		buttons: {
 			"Remove group": function(){
-				var post = $( "#deletegroupdata" ).serialize();
-				$.post( 'ajax/deletegroup.php', post, function(data){
-					$( "a[x-gid='"+gid+"']" ).parent().remove();
+				var post = $( "#removegroupdata" ).serialize();
+				$.post( 'ajax/removegroup.php', post, function(data){
+					if( data.status == "success" ){
+						$( "a[x-gid='"+gid+"']" ).parent().remove();
+					}
+					else{
+						alert( "Bug By Jakob (c)" );
+					}
 				});
 				$( this ).dialog( "close" );
 			},
@@ -107,7 +144,7 @@ $(document).ready(function(){
 			}
 		},
 		close: function(){
-			allFields.val( "" ).removeClass( "ui-state-error" );
+			true;
 		}
 	});
 
diff --git a/admin/templates/users.php b/admin/templates/users.php
index ce78ffac775d174a710215cf262c72babf73f135..b2172b053999f9a691a90001d08275c4e08d805e 100644
--- a/admin/templates/users.php
+++ b/admin/templates/users.php
@@ -28,7 +28,7 @@
 <a id="adduser-button" href="">New user</a>
 
 <h2>Groups</h2>
-<form>
+<form id="creategroupdata">
 	<table id="groupstable">
 		<thead>
 			<tr>
@@ -36,6 +36,12 @@
 				<th></th>
 			</tr>
 		</thead>
+		<tfoot>
+			<tr>
+				<td><input type="text" name="groupname" id="creategroupname" /></td>
+				<td><button id="creategroupbutton">Create group</button></td>
+			</tr>
+		</tfoot>
 		<tbody>
 			<?php foreach($_["groups"] as $group): ?>
 				<tr>
@@ -43,17 +49,10 @@
 					<td x-gid="<?php echo $group["name"]; ?>"><a class="removegroup-button" href="">remove</a></td>
 				</tr>
 			<?php endforeach; ?>
-			<tr>
-				<td><input type="text" name="name" /></td>
-				<td><input type="submit" /></td>
-			</tr>
 		</tbody>
 	</table>
 </form>
 
-<a id="addgroup-button" href="">Add group</a>
-
-
 <div id="adduser-form" title="Add user">
 	<form id="createuserdata">
 		<fieldset>
@@ -82,13 +81,13 @@
 <div id="removeuser-form" title="Remove user">
 	<form id="removeuserdata">
 		Do you really want to delete user <span id="deleteuserusername">$user</span>?
-		<input type="hidden" name="username" value="">
+		<input id="deleteusernamefield" type="hidden" name="username" value="">
 	</form>
 </div>
 
 <div id="removegroup-form" title="Remove Group">
-	<form id="removeuserdata">
+	<form id="removegroupdata">
 		Do you really want to delete group <span id="deletegroupgroupname">$group</span>?
-		<input id="deletegroupnamefield" type="hidden" name="username" value="">
+		<input id="deletegroupnamefield" type="hidden" name="groupname" value="">
 	</form>
 </div>
diff --git a/lib/Group/backend.php b/lib/Group/backend.php
index f34c340be8cfbf4ab6cb07ad787204d2f13b9802..c3f208157e4cf5dc42451471d03f71811a0af1ae 100644
--- a/lib/Group/backend.php
+++ b/lib/Group/backend.php
@@ -35,6 +35,13 @@ abstract class OC_GROUP_BACKEND {
 	 */
 	public static function createGroup($groupName){}
 
+	/**
+	 * Try to delete Group
+	 *
+	 * @param  string  $groupName  The name of the group to delete
+	 */
+	public static function deleteGroup($groupName){}
+
 	/**
 	 * Check if a user belongs to a group
 	 *
diff --git a/lib/Group/database.php b/lib/Group/database.php
index e3e6c825b9f33ab03446d2a2fa6cd03eac0c9421..aea27a3d6d8b7e40567a65ff3a8c6ea05a8e3728 100644
--- a/lib/Group/database.php
+++ b/lib/Group/database.php
@@ -66,6 +66,18 @@ class OC_GROUP_DATABASE extends OC_GROUP_BACKEND {
 		}
 	}
 
+	/**
+	 * Try to delete a group
+	 *
+	 * @param  string  $groupName  The name of the group to delete
+	 */
+	public static function deleteGroup( $gid ){
+		$query = OC_DB::prepare( "DELETE FROM `*PREFIX*groups` WHERE `gid` = ?" );
+		$result = $query->execute( array( $gid ));
+
+		return true;
+	}
+
 	/**
 	 * Check if a user belongs to a group
 	 *
diff --git a/lib/User/backend.php b/lib/User/backend.php
index 0483d72bf02f1f98cdc91323f7d1659113ebd5a5..29a1932e193ffe5ac0e8ca47ff327c6382d97e3f 100644
--- a/lib/User/backend.php
+++ b/lib/User/backend.php
@@ -37,6 +37,12 @@ abstract class OC_USER_BACKEND {
 	 */
 	public static function createUser($username, $password){}
 
+	/**
+	 * @brief Delete a new user
+	 * @param $username The username of the user to delete
+	 */
+	public static function deleteUser( $username ){}
+
 	/**
 	 * Try to login a user
 	 *
diff --git a/lib/User/database.php b/lib/User/database.php
index f0b68cf17d7d2af5d35b0ea77ade2a83e8c3654a..5b68d3ff7c2d23e1da9fb995629a4bdde9f2975d 100644
--- a/lib/User/database.php
+++ b/lib/User/database.php
@@ -64,6 +64,18 @@ class OC_USER_DATABASE extends OC_USER_BACKEND {
 		}
 	}
 
+	/**
+	 * Try to delete a user
+	 *
+	 * @param  string  $username  The username of the user to delete
+	 */
+	public static function deleteUser( $uid ){
+		$query = OC_DB::prepare( "DELETE FROM `*PREFIX*users` WHERE `uid` = ?" );
+		$result = $query->execute( array( $uid ));
+
+		return true;
+	}
+
 	/**
 	 * Try to login a user
 	 *
diff --git a/lib/app.php b/lib/app.php
index c9e4d534357e881e364708b5ed1dc87629839ecb..19e6df77f84d9ab581de7da7b426b497209cdc42 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -318,7 +318,6 @@ class OC_APP{
 	 *   -# unzipping it
 	 *   -# including appinfo/installer.php
 	 *   -# executing "oc_app_install()"
-	 *   -# renaming appinfo/app.sample.php to appinfo/app.php
 	 *
 	 * It is the task of oc_app_install to create the tables and do whatever is
 	 * needed to get the app working.
@@ -346,8 +345,6 @@ class OC_APP{
 	 *   - pretend: boolean, if set true the system won't do anything
 	 *   - noupgrade: boolean, if true the function oc_app_upgrade will be
 	 *     skipped
-	 *   - keepappinfo: boolean. If set true, the folder appinfo will not be
-	 *     deleted, appinfo/app.php will not be replaced by a new version
 	 *
 	 * This function works as follows
 	 *   -# fetching the file
@@ -355,7 +352,6 @@ class OC_APP{
 	 *   -# unzipping new file
 	 *   -# including appinfo/installer.php
 	 *   -# executing "oc_app_upgrade( $options )"
-	 *   -# renaming appinfo/app.sample.php to appinfo/app.php
 	 */
 	public static function upgradeApp( $data = array()){
 		// TODO: write function
diff --git a/lib/filestorage.php b/lib/filestorage.php
index e7fb9e9d2705676262409874fc87a9d39a42e792..799d07da9db5360a8e9b8f6b5de470036c24e9e7 100644
--- a/lib/filestorage.php
+++ b/lib/filestorage.php
@@ -378,6 +378,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
 	}
 
 	public function fromTmpFile($tmpFile,$path){
+die( "oh nooo!" );
 		$fileStats = stat($tmpFile);
 		if(rename($tmpFile,$this->datadir.$path)){
 			touch($this->datadir.$path, $fileStats['mtime'], $fileStats['atime']);
@@ -447,7 +448,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
 		}
 		return $return;
 	}
-	
+
 	/**
 	 * @brief get the size of folder and it's content
 	 * @param string $path file path
@@ -462,7 +463,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
 			return $this->calculateFolderSize($path);
 		}
 	}
-	
+
 	/**
 	 * @brief calulate the size of folder and it's content and cache it
 	 * @param string $path file path
@@ -493,7 +494,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
 		}
 		return $size;
 	}
-	
+
 	/**
 	 * @brief clear the folder size cache of folders containing a file
 	 * @param string $path
diff --git a/lib/group.php b/lib/group.php
index 6ea8681c631ec3292f161ff34a993342fb255fbd..d8a59a139a5cb99081fee59616cb7c134d1824f0 100644
--- a/lib/group.php
+++ b/lib/group.php
@@ -78,6 +78,24 @@ class OC_GROUP {
 		}
 	}
 
+	/**
+	 * Try to create a new group
+	 *
+	 * @param  string  $groupName  The name of the group to create
+	 */
+	public static function createGroup($gid) {
+		return self::$_backend->createGroup($gid);
+	}
+
+	/**
+	 * Try to delete Group
+	 *
+	 * @param  string  $groupName  The name of the group to delete
+	 */
+	public static function deleteGroup($gid) {
+		return self::$_backend->deleteGroup($gid);
+	}
+
 	/**
 	 * Check if a user belongs to a group
 	 *
@@ -124,13 +142,4 @@ class OC_GROUP {
 	public static function getGroups() {
 		return self::$_backend->getGroups();
 	}
-	
-	/**
-	 * create a new group
-	 *
-	 * @param  string  $name   Name of the group
-	 */
-	public static function createGroup($name) {
-		return self::$_backend->createGroup($name);
-	}
 }
diff --git a/lib/user.php b/lib/user.php
index d70443b7e61751708353f82a27c6385427d0d355..6cfcc6be488dd5b949495b2175713b340103a299 100644
--- a/lib/user.php
+++ b/lib/user.php
@@ -95,6 +95,14 @@ class OC_USER {
 		return self::$_backend->createUser( $username, $password );
 	}
 
+	/**
+	 * @brief Delete a new user
+	 * @param $username The username of the user to delete
+	 */
+	public static function deleteUser( $username ){
+		return self::$_backend->deleteUser( $username );
+	}
+
 	/**
 	 * @brief try to login a user
 	 * @param $username The username of the user to log in