public void parse(MC2Parser mc2p) throws MC2ParserException,
            IOException {
        
        int radius = UpdatesHandler.VALUE_UNDEF;   //just in case
        int lat = 0, lon = 0;
        
        CharArray ca = mc2p.attributeCharArray(MC2Strings.aouter_radius);
        if (ca != null) {
            radius = ca.intValue();
        }
        
        mc2p.children();
        
        //check and report status code 
        ServerError status = mc2p.getErrorIfExists();
        if (status != null) {
            error(status);
            return;
        }
        
        if (mc2p.nameRefEq(MC2Strings.tposition_item)) {
            mc2p.children();
            do {
                if (mc2p.nameRefEq(MC2Strings.tlat)) {
                    lat = mc2p.valueAsInt();
                }
                else if (mc2p.nameRefEq(MC2Strings.tlon)) {
                    lon = mc2p.valueAsInt();
                }
            } while (mc2p.advance());
            
            mc2p.advance();
        }
        
        m_listener.cellIdReplyDone(m_reqID, new Position(lat, lon), radius);
    }