private void processSecondaryOrders(RdpPacket_Localised data)
            throws OrderException, RdesktopException {
        int length = 0;
        int type = 0;
        int flags = 0;
        int next_order = 0;

        length = data.getLittleEndian16();
        flags = data.getLittleEndian16();
        type = data.get8();

        next_order = data.getPosition() + length + 7;

        switch (type) {

        case RDP_ORDER_RAW_BMPCACHE:
            logger.debug("Raw BitmapCache Order");
            this.processRawBitmapCache(data);
            break;

        case RDP_ORDER_COLCACHE:
            logger.debug("Colorcache Order");
            this.processColorCache(data);
            break;

        case RDP_ORDER_BMPCACHE:
            logger.debug("Bitmapcache Order");
            this.processBitmapCache(data);
            break;

        case RDP_ORDER_FONTCACHE:
            logger.debug("Fontcache Order");
            this.processFontCache(data);
            break;

        case RDP_ORDER_RAW_BMPCACHE2:
            try {
                this.process_bmpcache2(data, flags, false);
            } catch (IOException e) {
                throw new RdesktopException(e.getMessage());
            } /* uncompressed */
            break;

        case RDP_ORDER_BMPCACHE2:
            try {
                this.process_bmpcache2(data, flags, true);
            } catch (IOException e) {
                throw new RdesktopException(e.getMessage());
            } /* compressed */
            break;

        default:
            logger.warn("Unimplemented 2ry Order type " + type);
        }

        data.setPosition(next_order);
    }