@Override
	public void onChatComplete(Player player, String reason, Object... args) throws EssentialsCommandException {
		// determine whether we're banning or unbanning
		if(args.length == 2) {
			// banning
			// determine if its an IP or not
			if(args[0] instanceof ArrayList<?>) {
				// get everyone on our list
				@SuppressWarnings("unchecked")
				ArrayList<Player> targetPlayers = (ArrayList<Player>)args[0];
				
				// get our expiry date
				Timestamp expiry = (Timestamp)args[1];
				
				// loop over our targets and ban them
				for(Player target: targetPlayers) {
					// make sure the target still exists
					if(target == null) {
						continue;
					}
					
					// ok, they're there.
					// ban them.
					ban(target, player, reason, expiry);
				}
			}
			else if(args[0] instanceof InetAddress) {
				// we have an IP
				InetAddress IP = (InetAddress)args[0];
				
				// get our expiry date
				Timestamp expiry = (Timestamp)args[1];
				
				// ban them
				banIP(IP, player, reason, expiry);
			}
			else {
				throw new EssentialsCommandException("Something went wrong, please contact an administrator!");
			}
		}
		else if(args.length == 1) {
			// unbanning
			// determine if its an IP or not
			if(args[0] instanceof String) {
				// get our target player
				String targetPlayer = (String)args[0];
				
				// unban them
				unban(targetPlayer, player, reason);
			}
			else if(args[0] instanceof InetAddress) {
				InetAddress IP = (InetAddress)args[0];
				unban(IP.toString(), player, reason);
			}
			else {
				throw new EssentialsCommandException("Something went wrong, please contact an administrator!");
			}
		}
		else {
			// ???
			throw new EssentialsCommandException("Something went wrong, please contact an administrator!");
		}
	}