@Override
    protected void animateFrontLED() {
        if (frontCurrent == frontTarget) {
            frontTarget = random.nextInt(11);
            frontDirection = frontCurrent < frontTarget;
        }

        int rearLeftInd = (10 - frontCurrent) * 3;
        int rearRightInd = (11 + frontCurrent) * 3;

        frontBytes[rearLeftInd] = frontDirection ? (byte) 255 : 0;
        frontBytes[rearLeftInd + 1] = frontDirection ? (byte) 204 : 0;
        frontBytes[rearLeftInd + 2] = frontDirection ? (byte) 0 : 0;

        frontBytes[rearRightInd] = frontDirection ? (byte) 255 : 0;
        frontBytes[rearRightInd + 1] = frontDirection ? (byte) 204 : 0;
        frontBytes[rearRightInd + 2] = frontDirection ? (byte) 0 : 0;

        if (frontCurrent != frontTarget) { // case when random is the same as previous, prevents IndexOutOfBounds
            frontCurrent += frontDirection ? 1 : -1;
        }
        setFrontLEDBytes(frontBytes);
    }