public void savePlayer(War3Player player){
        addPlayer(player);
        FileOutputStream fo = null;
        BufferedWriter bw = null;
        try {
            fo = new FileOutputStream(new File(this.playersDataFilePath));
            bw = new BufferedWriter(new OutputStreamWriter(fo));
            bw.write(groups.toString().substring(1, groups.toString().length()-1));
            bw.newLine();
            for(Map.Entry<String, List<War3Player>> entry : playersMappedByGroup.entrySet()){
                for(War3Player tmpPlayer : entry.getValue()){
                    bw.write(tmpPlayer.toString());
                    bw.newLine();
                }
            }
            bw.flush();
        } catch (FileNotFoundException e) {
            logger.error("Can't find file :" + this.playersDataFilePath, e);
        } catch (IOException e) {
            logger.error("Failed to read content from file :" + this.playersDataFilePath, e);
        } finally {
            try {
                if (null != fo) {
                    fo.close();
                }
                if (null != bw) {
                    bw.close();
                }
            } catch (IOException e) {
                //e.printStackTrace();
                // IGNORE this exception
            }
        }
    }