public synchronized void postScore(int userId, int levelId, int score)
	{
		if (userId < 0 || levelId < 0 || score < 0) throw new IllegalArgumentException();

		TreeSet<Player> leaderboard = leaderboards.get(levelId);

		if (leaderboard == null)
		{
			leaderboard = new TreeSet<Player>();
		}

		HashMap<Integer, Player> players = currentScorePlayers.get(levelId);

		if (players == null)
		{
			players = new HashMap<Integer, Player>();
		}

		if ( saveNewHighScore(leaderboard, players, new Player(userId, score)) )
		{
			leaderboards.put(levelId, leaderboard);
			currentScorePlayers.put(levelId, players);
		}
	}