public void add(CommandSender sender, String[] args){
		String Second;
		try{
			Second = args[1];
		} catch(ArrayIndexOutOfBoundsException e){
			sender.sendMessage(Red + "Too few arguments!");
			sendHelp(sender);
			return;
		}
		
		if(xm.playerExists(Second)){
			String Third = null, Fourth = null, playerWorld = null;
			
			try{
				playerWorld = xm.getServer().getPlayer(Second).getWorld().getName();
			} catch(NullPointerException e){
				playerWorld = null;
			}
			
			boolean worldSpecified = false;
			try{
				Third = args[2];
			} catch(ArrayIndexOutOfBoundsException e){
				sender.sendMessage(Red + "Please Specify a group!");
				return;
			}
			try{
				Fourth = args[3];
				worldSpecified = true;
			} catch(ArrayIndexOutOfBoundsException e){
				worldSpecified = false;
			}
			
			
			if(xm.getXgroup().isGroup(Third)){
				if(worldSpecified){
					if(xm.getXworld().isWorld(Fourth)){
						xm.getUsers().get().set("users." + Second + "." + Fourth, Third);
						xm.getUsers().save();
						if(playerWorld != null){
							if(xm.getXgroup().isSupportedByWorld(Third, playerWorld)){
								xm.getXpermissions().setPermissions(xm.getServer().getPlayer(Second), Third);
							}
						}
						sender.sendMessage(Green + Second + DarkGrey + " now belongs to " + Green + Third + DarkGrey + " when in " + Green + Fourth);
						return;
					}
					else{
						sender.sendMessage(DarkGrey + "Invalid world: " + Red + Fourth);
					}
				}
				else{
					String[] supported = xm.getXgroup().getSupportedWorlds(Third);
					ArrayList<String> messages = new ArrayList<String>();
					messages.add(Green + Second + DarkGrey + " now belongs to " + Green + Third + DarkGrey + " in the following worlds: ");
					messages.add(sectionDiv);
					
					for(int i = 0; i < supported.length; i++){
						xm.getUsers().get().set("users." + Second + "." + supported[i], Third);
						messages.add(supported[i]);
					}
					xm.getUsers().save();
					
					if(playerWorld != null){
						if(xm.getXgroup().isSupportedByWorld(Third, playerWorld)){
							xm.getXpermissions().setPermissions(xm.getServer().getPlayer(Second), Third);
						}
					}
					
					messages.add(sectionDiv);
					sender.sendMessage(messages.toArray(new String[0]));
				}
			}
			else{
				sender.sendMessage(DarkGrey + "Group not found: " + Green + Third);
			}
			
		}
		if(Second.equalsIgnoreCase("prefix")){
			if(args.length < 4){
				sender.sendMessage("Too few arguments!");
				sendHelp(sender);
			}
			else{
				String Third, Fourth;
				Third = args[2];
				Fourth = args[3];
				if(xm.getXgroup().isGroup(Fourth)){
					xm.getPermissions().get().set("groups." + Fourth + ".prefix", Third);
					xm.getPermissions().save();
					xm.getXpermissions().updatePermissions(Fourth);
					
					sender.sendMessage(Green + Third + DarkGrey + " is now " + Green + Fourth + DarkGrey + "'s prefix");
				}
				else{
					if(xm.playerExists(Fourth)){
						xm.getUsers().get().set("users." + Fourth + ".prefix", Third);
						xm.getUsers().save();
						Player player;
						try{
							player = xm.getServer().getPlayer(Fourth);
						} catch(NullPointerException e){
							sender.sendMessage(Green + Third + DarkGrey + " is now " + Green + Fourth + DarkGrey + "'s prefix");
							return;
						}
						
						xm.getXpermissions().updatePermissions(player);
						sender.sendMessage(Green + Third + DarkGrey + " is now " + Green + Fourth + DarkGrey + "'s prefix");
					}
					else{
						sender.sendMessage(Red + Fourth + DarkGrey + " does not appear to exist");
					}
				}
			}
		}
		if(Second.equalsIgnoreCase("suffix")){
			if(args.length < 4){
				sender.sendMessage("Too few arguments!");
				sendHelp(sender);
			}
			else{
				String Third, Fourth;
				Third = args[2];
				Fourth = args[3];
				if(xm.getXgroup().isGroup(Fourth)){
					xm.getPermissions().get().set("groups." + Fourth + ".suffix", Third);
					xm.getPermissions().save();
					xm.getXpermissions().updatePermissions(Fourth);
					sender.sendMessage(Green + Third + DarkGrey + " is now " + Green + Fourth + DarkGrey + "'s suffix");
				}
				else{
					if(xm.playerExists(Fourth)){
						xm.getUsers().get().set("users." + Fourth + ".suffix", Third);
						xm.getUsers().save();
						Player player;
						try{
							player = xm.getServer().getPlayer(Fourth);
						} catch(NullPointerException e){
							sender.sendMessage(Green + Third + DarkGrey + " is now " + Green + Fourth + DarkGrey + "'s suffix");
							return;
						}
						
						xm.getXpermissions().updatePermissions(player);
						sender.sendMessage(Green + Third + DarkGrey + " is now " + Green + Fourth + DarkGrey + "'s suffix");
					}
					else{
						sender.sendMessage(Red + Fourth + DarkGrey + " does not appear to exist");
					}
				}
			}
		}
		if(Second.equalsIgnoreCase("permission")){
			if(args.length < 4){
				sender.sendMessage("Too few arguments!");
				sendHelp(sender);
			}
			else{
				String Third, Fourth;
				Third = args[2];
				Fourth = args[3];
				if(xm.getXgroup().isGroup(Fourth)){
					xm.getXpermissions().addNode(Fourth, Third);
					xm.getXpermissions().updatePermissions(Fourth);
					sender.sendMessage(Green + Third + DarkGrey + " has been added to " + Green + Fourth);
				}
				else{
					if(xm.playerExists(Fourth)){
						xm.getXplayer().addNode("", Fourth, Third);
						Player player;
						try{
							player = xm.getServer().getPlayer(Fourth);
						} catch(NullPointerException e){
							sender.sendMessage(Green + Third + DarkGrey + " has been given to " + Green + Fourth);
							return;
						}
						sender.sendMessage(Green + Third + DarkGrey + " has been given to " + Green + Fourth);
						xm.getXpermissions().updatePermissions(player);
					}
					else{
						sender.sendMessage(Red + Fourth + DarkGrey + " does not appear to exist");
					}
				}
			}
		}
	}