@Override
    protected void animateRearLED() {
        if (rearCurrent == rearTarget) {
            rearTarget = random.nextInt(26);
            rearDirection = rearCurrent < rearTarget;
        }

        int rearLeftInd = (25 - rearCurrent) * 3;
        int rearRightInd = (26 + rearCurrent) * 3;

        rearBytes[rearLeftInd] = rearDirection ? (byte) 36 : 0;
        rearBytes[rearLeftInd + 1] = rearDirection ? (byte) 148 : 0;
        rearBytes[rearLeftInd + 2] = rearDirection ? (byte) 253 : 0;

        rearBytes[rearRightInd] = rearDirection ? (byte) 36 : 0;
        rearBytes[rearRightInd + 1] = rearDirection ? (byte) 148 : 0;
        rearBytes[rearRightInd + 2] = rearDirection ? (byte) 253 : 0;

        if (rearCurrent != rearTarget) { // case when random is the same as previous, prevents IndexOutOfBounds
            rearCurrent += rearDirection ? 1 : -1;
        }
        setRearLEDBytes(rearBytes);
    }