private void parseDefs(String fileName, int numProvs) throws FileNotFoundException, IOException {
        final BufferedReader reader = new BufferedReader(new FileReader(fileName));
        
        try {
            reader.readLine();  // eat first line
            
            for (int i = 1; i < numProvs; i++) {
                String line;
                if ((line = reader.readLine()) == null)
                    break;
                
                String[] arr = SEMICOLON.split(line);
            
                if (arr == null) {
                    System.err.println("Badly formatted province definition: " + line);
                    continue;
                }
                
                final int id = Integer.parseInt(arr[0]);
                final int r = Integer.parseInt(arr[1]);
                final int g = Integer.parseInt(arr[2]);
                final int b = Integer.parseInt(arr[3]);
                
                int color = ALPHA;
                color += (r & 0xFF) << 16;
                color += (g & 0xFF) << 8;
                color += (b & 0xFF);
                
                final Province p = new Province(id, arr[4], color);
                
                rgbMap.put(color, p);
                allProvs[id] = p;
            }
        } finally {
            reader.close();
        }
        
        final Province ti = new Province(0, "Terra Incognita", ALPHA);
        rgbMap.put(ALPHA, ti);
        allProvs[0] = ti;
    }