protected synchronized int getNextState(int oldstate) {
        int nextState;
        switch(oldstate) {
        case STATE_DORMANT:
            // zzz... eh, what?
            // check to see if the categories can be read from disk
            nextState = STATE_READ_FROM_DISK;
            break;
            
        case STATE_READ_FROM_DISK:
            // did we get any data? if not create dummy
            if(m_currentRegions.length == 0) {
                nextState = STATE_CREATE_DUMMY_DATA;
            } else {
                nextState = STATE_CHECK_WITH_SERVER;
            }
            break;
            
        case STATE_CREATE_DUMMY_DATA:
            nextState = STATE_CHECK_WITH_SERVER;
            break;
            
        case STATE_CHECK_WITH_SERVER:
        case STATE_FULLY_UPDATED:
            if(newLanguageDetected()) {
                nextState = STATE_CHECK_WITH_SERVER;
            } else {
                nextState = STATE_FULLY_UPDATED;
            }
            break;
            
        default:
            if(LOG.isError()) {
                LOG.error("CategoryHolder.getNextState()", 
                        "Unable to determine next state");
            }
            nextState = oldstate;
        }
        
        return nextState;
    }