protected synchronized void handleNextState(int state) {
        switch(state) {
        case STATE_READ_FROM_DISK:
            SearchDescriptorPersistenceRequest req = new SearchDescriptorPersistenceRequest(this);
            m_systems.getPersistentModule().pendingReadPersistenceRequest(req, PersistenceModule.SETTING_SEARCH_DATA);
            break;
            
        case STATE_CHECK_WITH_SERVER:
            if(LOG.isDebug()) {
                if(m_descriptor.isValid()) {
                    LOG.debug("SearchHolder.handleNextState()", 
                    "Checking with server if new search descriptor is available");
                } else {
                    LOG.debug("SearchHolder.handleNextState()", 
                    "Downloading search descriptor from server");
                }
            }
            
            // schedule request
            m_mc2ifc.pendingMC2Request(new SearchDescriptorMC2Request(
                    m_systems.getSettingsIfc().getGeneralSettings(),
                    m_descriptor, this));
            break;
            
        case STATE_FULLY_UPDATED:
            sendRequests();
            readyToAdvance();
            break;
            
        default:
            if(LOG.isError()) {
                LOG.error("TopRegionHolder.advanceToState()", 
                        "Tried to advance to unknown state");
            }
        }
    }