public CopyOnWriteArrayList loadCollection() throws FileNotFoundException, IOException {
        if (new File(COLLECTIONFILE).exists()) {

            BufferedReader reader = new BufferedReader(new FileReader(COLLECTIONFILE));
            String line = null;
            CopyOnWriteArrayList ret = new CopyOnWriteArrayList<TrackGUI>();


            while ((line = reader.readLine()) != null) {
                String[] properties = new String[8];

                properties = line.split(SIGN);

                try {
                    if (new File(properties[0]).exists()) {
                        Track newTrack = createMP3File(properties[0]);
                        newTrack.setDurchmesser(Integer.parseInt(properties[1]));
                        Random ra = new Random();

                        TrackGUI newTrackGUI = new TrackGUI(newTrack, Integer.parseInt(properties[6]), Integer.parseInt(properties[7]), MP3PlayerGUI.randomDirection(), MP3PlayerGUI.randomDirection(), Integer.parseInt(properties[3]), Integer.parseInt(properties[4]), Integer.parseInt(properties[5]), 520, 1010, false);
                        ret.add(newTrackGUI);
                    }
                } catch (CannotReadException ex) {
                    Logger.getLogger(MP3Repository.class.getName()).log(Level.SEVERE, null, ex);
                } catch (TagException ex) {
                    Logger.getLogger(MP3Repository.class.getName()).log(Level.SEVERE, null, ex);
                } catch (ReadOnlyFileException ex) {
                    Logger.getLogger(MP3Repository.class.getName()).log(Level.SEVERE, null, ex);
                } catch (InvalidAudioFrameException ex) {
                    Logger.getLogger(MP3Repository.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            reader.close();
            return ret;
        } else {
            return new CopyOnWriteArrayList<TrackGUI>();
        }
    }