public boolean onJoinCommand(CommandSender sender, Command cmd, String label, String[] args){
		if (args.length == 1) {
			//specified only the team to join. join hte first
			for (CTFSession s: sessions) {
				if (s.hasTeam(args[0])) {
					CTFTeam team = s.getTeam(args[0]);
					s.addPlayer(team, getTeamPlayer((Player) sender));
					
					sender.sendMessage("You have joined the team [" + team.getName() + "] in the session [" + s.getName() + "]!");
					return true;
				}
			}
			//never returned so never found that team
			sender.sendMessage("Could not find a team with the name " + args[0] + "! Try using /lteams to see all available teams");
			return true;
		}
		else if (args.length == 2) {
			//arg 1 is session, arg 2 is team 
			CTFSession session = null;
			CTFTeam team = null;
			//first try and get the session.
			for (CTFSession s : sessions) {
				if (s.getName().equalsIgnoreCase(args[0])) {
					//found the sesson
					session = s;
					break;
				}
			}
			
			//make sure we found the sesson
			if (session == null) {
				sender.sendMessage("Could not find the session " + args[0] + "!");
				return true;
			}
			
			//we found the session, so try and find the team
			team = session.getTeam(args[1]);
			if (team == null) {
				sender.sendMessage("Could not find the team " + args[1] + "!");
				return true;
			}
			
			//found both the session and team
			team.addPlayer(getTeamPlayer((Player) sender));
			sender.sendMessage("You have joined the team [" + team.getName() + "] in the session [" + session.getName() + "]!");

			return true;
		}
		else {
			//invalid argument cound
			return false;
		}
	}