protected synchronized void handleNextState(int state) {
        switch(state) {
        case STATE_READ_FROM_DISK:
            TopRegionPersistenceRequest req = new TopRegionPersistenceRequest(this);
            m_systems.getPersistentModule().pendingReadPersistenceRequest(req, PersistenceModule.SETTING_SEARCH_DATA);
            break;
            
        case STATE_CREATE_DUMMY_DATA:
            updateTopRegionList(createDummyData(), "", Language.EN, false);
            break;
            
        case STATE_CHECK_WITH_SERVER:
            if(LOG.isDebug()) {
                if(!ParameterValidator.isEmptyString(m_crc)) {
                    LOG.debug("TopRegionHolder.handleNextState()", 
                    "Checking with server if new top region list is available");
                } else {
                    LOG.debug("TopRegionHolder.handleNextState()", 
                    "Downloading list of top regions from server");
                }
            }
            
            // schedule request
            m_mc2ifc.pendingMC2Request(new TopRegionMC2Request(
                    this, m_crc,
                    m_systems.getSettingsIfc().getGeneralSettings()));
            break;
            
        case STATE_FULLY_UPDATED:
            clearListeners();
            break;
            
        default:
            if(LOG.isError()) {
                LOG.error("TopRegionHolder.advanceToState()", 
                        "Tried to advance to unknown state");
            }
        }
    }