public void addDataLayer(IDataContent datacontent) throws ParseException {
   IImageLayer iil = null;
   if (datacontent instanceof IGeoRaster) {
     iil = new FastImageLayer(root, (IGeoRaster) datacontent);
     root.addLayer(iil);
     root.render(geocontext);
     for (IDataContent vectordatacontent : m_tmplayers) {
       addDataLayer(vectordatacontent);
     }
     m_tmplayers.clear();
   }
   if (datacontent instanceof IVectorData) {
     IVectorData vectordata = (IVectorData) datacontent;
     for (ILayer layer : root.getLayers()) {
       if (layer.isActive()) {
         iil = (IImageLayer) layer;
       }
     }
     if (iil != null) {
       IGeoRaster gir = iil.getImage();
       GeometricLayer layer = GeoUtils.createImageProjectedLayer(vectordata, gir, "EPSG:4326");
       iil.addLayer(new SimpleVectorLayer(vectordata.getName(), iil, vectordata, layer));
     } else {
       m_tmplayers.add(datacontent);
     }
   }
 }
 public void removeDataLayer(IDataContent datacontent) throws ParseException {
   IImageLayer iil = null;
   for (ILayer layer : root.getLayers()) {
     if (layer.isActive()) {
       iil = (IImageLayer) layer;
       if (iil.represents(datacontent)) {
         root.removeLayer(iil);
       }
     }
   }
   for (ILayer layer : iil.getLayers()) {
     // need to find a way to keep track of data content used for layers
     if (layer.represents(datacontent)) {
       iil.removeLayer(layer);
     }
   }
 }