private POFile parse(File file)
    {
        Vector<String> rawentry = new Vector<String>(1, 1);
        Vector<Vector<String>> rawentries = new Vector<Vector<String>>();
        String line;
        try
        {
            int id = 0;
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            while((line = br.readLine()) != null)
            {
                if(!line.equals(""))
                {
                    if(!line.startsWith("#~")) // ignore
                    {
                        rawentry.add(line);
                    }
                }
                else
                {
                    if(rawentry.size() > 0)
                    {
                        rawentry.add(0, String.valueOf(id));
                        id++;
                        rawentries.add(new Vector<String>(rawentry));
                        rawentry = new Vector<String>(1, 1);
                    }
                }
            }

            if(!rawentry.equals(rawentries.lastElement()) && rawentry.size() > 0)
            {
                rawentry.add(0, String.valueOf(id));
                rawentries.add(new Vector<String>(rawentry));
            }
            this.header = parseHeader(rawentries);
            this.entries = parseEntries(rawentries);
            br.close();
            fr.close();
        }
        catch (java.io.FileNotFoundException e)
        {
            System.out.println(e.toString());
        }
        catch (java.io.IOException e) {
            System.out.println(e.toString());
        }

        return new POFile(entries, header, file);
    }