diff --git a/webgui/ajax.php b/webgui/ajax.php
index a0d3fd0bc75d3d4df9ab329c57c8258794e7f469..29aaaca925580d5866687f9982134aa5b38b7361 100644
--- a/webgui/ajax.php
+++ b/webgui/ajax.php
@@ -96,8 +96,8 @@
 			# Build hash and push into param list
 			$search = array(
 				'Filter' => isset($_REQUEST['filter']) ? $_REQUEST['filter'] : '',
-				'Start' => $_REQUEST['start'],
-				'Limit' => $_REQUEST['limit'],
+				'Start' => isset($_REQUEST['start']) ? $_REQUEST['start'] : NULL,
+				'Limit' => isset($_REQUEST['limit']) ? $_REQUEST['limit'] : NULL,
 				'Sort' => isset($_REQUEST['sort']) ? $_REQUEST['sort'] : '',
 				'SortDirection' => isset($_REQUEST['dir']) ? $_REQUEST['dir'] : '',
 			);
@@ -150,7 +150,16 @@
 
 	switch ($function) {
 
-		# AdminUserGroups.js functions
+		# addAdminUserGroup.js functions
+		case "addAdminUserGroup":
+
+			$res = addAdminUserGroup($soapParams);
+			if (isset($res)) {
+				ajaxException($res);
+			}
+
+			break;
+
 		case "removeAdminUserGroup":
 
 			$res = removeAdminUserGroup($soapParams);
@@ -195,6 +204,15 @@
 			echo json_encode($res->export());
 			break;
 
+		case "removeAdminUserAttribute":
+
+			$res = removeAdminUserAttribute($soapParams);
+			if (isset($res)) {
+				ajaxException($res);
+			}
+
+			break;
+
 		# WiSPUsers.js functions
 		case "updateWiSPUser":
 
diff --git a/webgui/include/ajax/functions/AdminUserAttributes.php b/webgui/include/ajax/functions/AdminUserAttributes.php
index afd774b781afe46cad23f7491bf2b825fff20297..69e11d67e73434fe09ad7f07e86e9c68ec627d32 100644
--- a/webgui/include/ajax/functions/AdminUserAttributes.php
+++ b/webgui/include/ajax/functions/AdminUserAttributes.php
@@ -3,6 +3,18 @@
 include_once("include/db.php");
 
 
+# Remove user attribute
+function removeAdminUserAttribute($params) {
+	global $db;
+
+	$res = DBDo("DELETE FROM user_attributes WHERE ID = ?",array($params[0]));
+	if (!is_numeric($res)) {
+		return $res;
+	}
+
+	return NULL;
+}
+
 # Return list of attributes
 function getAdminUserAttributes($params) {
 	global $db;
diff --git a/webgui/include/ajax/functions/AdminUserGroups.php b/webgui/include/ajax/functions/AdminUserGroups.php
index d06a73539b4b22116c41fa4923769994711e5790..2f73f9a9dba2e5e7d26b7e0b6a0c5790d38566f3 100644
--- a/webgui/include/ajax/functions/AdminUserGroups.php
+++ b/webgui/include/ajax/functions/AdminUserGroups.php
@@ -3,6 +3,18 @@
 include_once("include/db.php");
 
 
+# Link user to group
+function addAdminUserGroup($params) {
+	global $db;
+
+	$res = DBDo("INSERT INTO users_to_groups (UserID,GroupID) VALUES (?,?)",array($params[0]['UserID'],$params[0]['GroupID']));
+	if (!is_numeric($res)) {
+		return $res;
+	}
+
+	return NULL;
+}
+
 # Unlink user from group
 function removeAdminUserGroup($params) {
 	global $db;
diff --git a/webgui/js/app/windows/AdminUserAttributes.js b/webgui/js/app/windows/AdminUserAttributes.js
index 36183b7812eac4327d94508f476223b553407de5..540483bf1cfdadf0709f343c7e94138bc8902a58 100644
--- a/webgui/js/app/windows/AdminUserAttributes.js
+++ b/webgui/js/app/windows/AdminUserAttributes.js
@@ -222,14 +222,14 @@ function showAdminGroupAddEditWindow(id) {
 
 
 // Display edit/add form
-function showAdminGroupRemoveWindow(parent,id) {
+function showAdminUserAttributeRemoveWindow(parent,id) {
 	// Mask parent window
 	parent.getEl().mask();
 
 	// Display remove confirm window
 	Ext.Msg.show({
 		title: "Confirm removal",
-		msg: "Are you very sure you wish to remove this group?",
+		msg: "Are you very sure you wish to remove this attribute?",
 		icon: Ext.MessageBox.ERROR,
 		buttons: Ext.Msg.YESNO,
 		modal: false,
@@ -244,8 +244,8 @@ function showAdminGroupRemoveWindow(parent,id) {
 						SOAPUsername: globalConfig.soap.username,
 						SOAPPassword: globalConfig.soap.password,
 						SOAPAuthType: globalConfig.soap.authtype,
-						SOAPModule: 'AdminGroups',
-						SOAPFunction: 'removeAdminGroup',
+						SOAPModule: 'AdminUserAttributes',
+						SOAPFunction: 'removeAdminUserAttribute',
 						SOAPParams: 'ID'
 					}
 				});
diff --git a/webgui/js/app/windows/AdminUserGroups.js b/webgui/js/app/windows/AdminUserGroups.js
index 41e371ebba2d500080ff12b219de963f268269e3..f1109a9b2734d38f2501124f634ff1b0d57a3a78 100644
--- a/webgui/js/app/windows/AdminUserGroups.js
+++ b/webgui/js/app/windows/AdminUserGroups.js
@@ -1,6 +1,6 @@
 
 
-function showAdminUserGroupsWindow(id) {
+function showAdminUserGroupsWindow(userID) {
 
 	var AdminUserGroupsWindow = new Ext.ux.GenericGridWindow(
 		// Window config
@@ -22,7 +22,7 @@ function showAdminUserGroupsWindow(id) {
 					tooltip:'Add group',
 					iconCls:'add',
 					handler: function() {
-						showAdminUserGroupAddEditWindow();
+						showAdminUserGroupAddWindow(userID);
 					}
 				}, 
 				'-', 
@@ -73,7 +73,7 @@ function showAdminUserGroupsWindow(id) {
 		// Store config
 		{
 			baseParams: {
-				ID: id,
+				ID: userID,
 				SOAPUsername: globalConfig.soap.username,
 				SOAPPassword: globalConfig.soap.password,
 				SOAPAuthType: globalConfig.soap.authtype,
@@ -96,7 +96,7 @@ function showAdminUserGroupsWindow(id) {
 
 
 // Display edit/add form
-function showAdminGroupAddEditWindow(id) {
+function showAdminUserGroupAddWindow(userID,id) {
 
 	var submitAjaxConfig;
 
@@ -108,15 +108,17 @@ function showAdminGroupAddEditWindow(id) {
 			SOAPFunction: 'updateAdminGroup',
 			SOAPParams: 
 				'0:ID,'+
-				'0:Name'
+				'0:GroupID'
 		};
 
 	// We doing an Add
 	} else {
 		submitAjaxConfig = {
-			SOAPFunction: 'createAdminGroup',
+			UserID: userID,
+			SOAPFunction: 'addAdminUserGroup',
 			SOAPParams: 
-				'0:Name'
+				'0:UserID,'+
+				'0:GroupID'
 		};
 	}
 	
@@ -143,11 +145,30 @@ function showAdminGroupAddEditWindow(id) {
 			},
 			items: [
 				{
-					fieldLabel: 'Name',
-					name: 'Name',
-					vtype: 'usernamePart',
-					maskRe: usernamePartRe,
-					allowBlank: false
+					xtype: 'combo',
+					//id: 'combo',
+					fieldLabel: 'Group',
+					name: 'Group',
+					allowBlank: false,
+					width: 160,
+
+					store: new Ext.ux.JsonStore({
+						sortInfo: { field: "Name", direction: "ASC" },
+						baseParams: {
+							SOAPUsername: globalConfig.soap.username,
+							SOAPPassword: globalConfig.soap.password,
+							SOAPAuthType: globalConfig.soap.authtype,
+							SOAPModule: 'AdminUserGroups',
+							SOAPFunction: 'getAdminGroups',
+							SOAPParams: '__null,__search'
+						}
+					}),
+					displayField: 'Name',
+					valueField: 'ID',
+					hiddenName: 'GroupID',
+					forceSelection: true,
+					triggerAction: 'all',
+					editable: false
 				},
 			],
 		},