public synchronized static String translateToString(DiceHand hand) {
        String returnMsg = "";
        // add the rollee
        returnMsg += ROLLEE_IDENTIFIER + VAL_SEP + hand.getRollee() + ELEMENT_SEP;
        // place on the modifier if it's not zero
        if (hand.getModifier() != 0) {
            returnMsg += MOD_IDENTIFIER + VAL_SEP + hand.getModifier() + ELEMENT_SEP;
        }
        // place on every dice
        for (Die die : hand.getDice()) {
            String positive = die.getSign() ? "!" : "@";
            returnMsg += DICE_IDENTIFIER + VAL_SEP + positive + VAL_SEP +
                    die.getSize() + VAL_SEP + die.getResult() + ELEMENT_SEP;
        }
        
        return returnMsg;
    }