@Override
    public void removeElement(Editable p) {
      super.removeElement(p);

      TrackSegment seg = (TrackSegment) p;
      seg.setWrapper(null);
    }
    @Override
    public void setWrapper(final TrackWrapper wrapper) {
      // is it different?
      if (wrapper == _myTrack) return;

      // store the value
      super.setWrapper(wrapper);

      // update our segments
      final Collection<Editable> items = getData();
      for (final Iterator<Editable> iterator = items.iterator(); iterator.hasNext(); ) {
        final TrackSegment seg = (TrackSegment) iterator.next();
        seg.setWrapper(_myTrack);
      }
    }
    public void addSegment(final TrackSegment segment) {
      segment.setWrapper(_myTrack);

      if (this.size() == 1) {
        // aah, currently, it's name's probably wrong sort out it's date
        final TrackSegment first = (TrackSegment) getData().iterator().next();
        first.sortOutDate(null);
      }

      super.add(segment);

      // if we've just got the one, set it's name to positions
      if (this.size() == 1) {
        final TrackSegment first = (TrackSegment) getData().iterator().next();
        first.setName("Positions");
      }
    }