public boolean audioChat(String sender, String target){ //this needs to be stress-tested and bug-fixed TODO
        if (sender.equalsIgnoreCase(target)){ System.out.println("Audio chat failed: cause 1"); return false; } //can't do audio chat with yourself!
        AudioThread thread = audioRooms.get(""+sender+" "+target);
        if (thread!=null){ return true; } //if this is an acceptance of a previously sent audio chat
        UserAccount user = users.get(target.toLowerCase());
        if (user==null) { System.out.println("Audio chat failed: cause 2"); return false; }
        ChatServerThread userThread = user.getThread();
        if (userThread==null){ System.out.println("Audio chat failed: cause 3"); return false; }
        AudioThread audioThread = new AudioThread(port+1); //default port 9001 for audio chats
        audioRooms.put(""+sender+" "+target, audioThread);
        audioThread.start();
        boolean ret = userThread.audioChat(sender);
        if (!ret){ System.out.println("Audio chat failed: cause 4"); return false; }
        return ret;
    }