diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/PointOfInterestController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/PointOfInterestController.java
index ed8ad79708e4146938d61ef15e85d5406e03756c..d98f5e6c7c126e49ab0830417d5410cf640b01fb 100755
--- a/src/main/java/no/nibio/vips/logic/controller/servlet/PointOfInterestController.java
+++ b/src/main/java/no/nibio/vips/logic/controller/servlet/PointOfInterestController.java
@@ -48,7 +48,7 @@ import no.nibio.vips.util.ExceptionUtil;
 import no.nibio.vips.util.ServletUtil;
 import no.nibio.vips.logic.entity.WeatherForecastProvider;
 import no.nibio.vips.logic.i18n.SessionLocaleUtil;
-import no.nibio.vips.logic.util.GISUtil;
+import no.nibio.vips.gis.GISUtil;
 import no.nibio.vips.logic.util.Globals;
 import no.nibio.web.forms.FormField;
 import no.nibio.web.forms.FormValidation;
diff --git a/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java b/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java
index 71e2e2f19f091c273b1694a30d0e72de9e61b588..c4d38968588064a5c244e078c8883c47f9b9ac17 100755
--- a/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java
+++ b/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java
@@ -74,7 +74,7 @@ import no.nibio.vips.logic.entity.VipsLogicUser;
 import no.nibio.vips.logic.scheduling.model.ModelRunPreprocessor;
 import no.nibio.vips.logic.scheduling.model.ModelRunPreprocessorFactory;
 import no.nibio.vips.logic.scheduling.model.PreprocessorException;
-import no.nibio.vips.logic.util.GISUtil;
+import no.nibio.vips.logic.util.GISEntityUtil;
 import no.nibio.vips.logic.util.Globals;
 import no.nibio.vips.logic.util.RunModelException;
 import no.nibio.vips.logic.util.SessionControllerGetter;
@@ -716,7 +716,7 @@ public class ForecastBean {
         List<PointOfInterest> poisWithAggregate = getPointOfInterestForecastsAggregate(organizationId, cropOrganismIds, theDate);
         //System.out.println(this.getClass().getName() + " DEBUG: getPointOfInterestForecastsAggregate took " + (new Date().getTime() - benchmark.getTime()) + " ms to complete.");
         
-        GISUtil gisUtil = new GISUtil();
+        GISEntityUtil gisUtil = new GISEntityUtil();
         for(PointOfInterest poiWithAggregate:poisWithAggregate)
         {
             // If it's an inactive weather station, we don't produce a placemark
diff --git a/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java b/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java
index 51e459f7ce70ee38cd6de41406e80f5e12cb80a4..8f1534f66f9046e2ed3fb78086db4697fafcb8ca 100755
--- a/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java
+++ b/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java
@@ -50,7 +50,7 @@ import no.nibio.vips.logic.entity.PointOfInterestType;
 import no.nibio.vips.logic.entity.PointOfInterestWeatherStation;
 import no.nibio.vips.logic.entity.VipsLogicUser;
 import no.nibio.vips.logic.entity.WeatherStationDataSource;
-import no.nibio.vips.logic.util.GISUtil;
+import no.nibio.vips.logic.util.GISEntityUtil;
 import no.nibio.vips.logic.util.Globals;
 import no.nibio.vips.logic.util.SessionControllerGetter;
 import no.nibio.web.forms.FormField;
@@ -190,7 +190,7 @@ public class PointOfInterestBean {
         
         
         String description = "";
-        GISUtil gisUtil = new GISUtil();
+        GISEntityUtil gisUtil = new GISEntityUtil();
         for(PointOfInterest poi:pois)
         {
             if(excludePoiId != null && excludePoiId.equals(poi.getPointOfInterestId()))
diff --git a/src/main/java/no/nibio/vips/logic/entity/Observation.java b/src/main/java/no/nibio/vips/logic/entity/Observation.java
index 8341bda59c072de94328efda8402f5131a1756a5..a838635aca0edb56fe70647a1302547a930f5cca 100755
--- a/src/main/java/no/nibio/vips/logic/entity/Observation.java
+++ b/src/main/java/no/nibio/vips/logic/entity/Observation.java
@@ -46,7 +46,8 @@ import javax.persistence.CascadeType;
 import javax.persistence.FetchType;
 import javax.persistence.OneToMany;
 import javax.validation.constraints.Size;
-import no.nibio.vips.logic.util.GISUtil;
+import no.nibio.vips.logic.util.GISEntityUtil;
+import no.nibio.vips.gis.GISUtil;
 import no.nibio.vips.logic.util.StringJsonUserType;
 import org.hibernate.annotations.Type;
 import org.hibernate.annotations.TypeDef;
@@ -109,9 +110,11 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
     
     private Set<ObservationIllustration> observationIllustrationSet;
     
+    private GISEntityUtil GISEntityUtil;
     private GISUtil GISUtil;
 
     public Observation() {
+        this.GISEntityUtil = new GISEntityUtil();
         this.GISUtil = new GISUtil();
     }
 
@@ -187,7 +190,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
     
     public void setGeoinfo(String json)
     {
-        this.setGeoinfos(this.GISUtil.getGisFromGeoJSON(json));
+        this.setGeoinfos(this.GISEntityUtil.getGisFromGeoJSON(json));
     }
     
     @Transient
@@ -196,7 +199,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
     {
         Map<String, Object> properties = new HashMap<>();
         properties.put("observationId", this.getObservationId());
-        return this.GISUtil.getGeoJSONFromGis(this.geoinfo, properties);
+        return this.GISEntityUtil.getGeoJSONFromGis(this.geoinfo, properties);
     }
     
     /*@Transient
diff --git a/src/main/java/no/nibio/vips/logic/entity/PointOfInterest.java b/src/main/java/no/nibio/vips/logic/entity/PointOfInterest.java
index 1a7f81354b5e79af3c661e02f5b2d54357a31e2c..e27300e00d70d5b52769b5847e7572f4e6fa83c6 100755
--- a/src/main/java/no/nibio/vips/logic/entity/PointOfInterest.java
+++ b/src/main/java/no/nibio/vips/logic/entity/PointOfInterest.java
@@ -46,7 +46,7 @@ import javax.persistence.DiscriminatorType;
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.FetchType;
 import javax.persistence.OneToMany;
-import no.nibio.vips.logic.util.GISUtil;
+import no.nibio.vips.gis.GISUtil;
 
 /**
  * @copyright 2017 <a href="http://www.nibio.no/">NIBIO</a>
diff --git a/src/main/java/no/nibio/vips/logic/service/LogicService.java b/src/main/java/no/nibio/vips/logic/service/LogicService.java
index b07d417bd26477b6a56fa6d751bf3ae3bf191efa..eaf953a0044208e99eb7ac6b2324ec75d9a19992 100755
--- a/src/main/java/no/nibio/vips/logic/service/LogicService.java
+++ b/src/main/java/no/nibio/vips/logic/service/LogicService.java
@@ -255,7 +255,7 @@ public class LogicService {
             to = SystemTime.getSystemTime();
             Calendar cal = Calendar.getInstance();
             cal.setTime(to);
-            cal.add(Calendar.MONTH, -2);
+            cal.add(Calendar.MONTH, -4);
             from = cal.getTime();
         }
 
diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationService.java b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
index 5f7a65d336776197660c888298cb2cfaf56cf3cd..b11eac413df6d264173dda8c0400d62d29cc9c79 100755
--- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
@@ -39,7 +39,7 @@ import javax.ws.rs.core.Response;
 import no.nibio.vips.logic.entity.Observation;
 import no.nibio.vips.logic.entity.VipsLogicRole;
 import no.nibio.vips.logic.entity.VipsLogicUser;
-import no.nibio.vips.logic.util.GISUtil;
+import no.nibio.vips.logic.util.GISEntityUtil;
 import no.nibio.vips.logic.util.Globals;
 import no.nibio.vips.logic.util.SessionControllerGetter;
 import org.jboss.resteasy.annotations.GZIP;
@@ -139,7 +139,7 @@ public class ObservationService {
             to
         );
         
-        GISUtil gisUtil = new GISUtil();
+        GISEntityUtil gisUtil = new GISEntityUtil();
         return Response.ok().entity(gisUtil.getGeoJSONFromObservations(filteredObservations)).build();
     }
     
@@ -301,7 +301,7 @@ public class ObservationService {
             observation.setStatusChangedByUserId(user.getUserId());
             observation.setStatusChangedTime(new Date());
             observation = SessionControllerGetter.getObservationBean().storeObservation(observation);
-            GISUtil gisUtil = new GISUtil();
+            GISEntityUtil gisUtil = new GISEntityUtil();
             return Response.created(URI.create("/observation/" + observation.getObservationId())).entity(gisUtil.getGeoJSONFromObservation(observation)).build();
         }catch (IOException ex)
         {
diff --git a/src/main/java/no/nibio/vips/logic/util/GISUtil.java b/src/main/java/no/nibio/vips/logic/util/GISEntityUtil.java
similarity index 76%
rename from src/main/java/no/nibio/vips/logic/util/GISUtil.java
rename to src/main/java/no/nibio/vips/logic/util/GISEntityUtil.java
index fa1bd890292438a4e8ffed77d687a33aac645a80..ab1b52c1b369cd23330d772d29591b5a833e7c21 100755
--- a/src/main/java/no/nibio/vips/logic/util/GISUtil.java
+++ b/src/main/java/no/nibio/vips/logic/util/GISEntityUtil.java
@@ -40,25 +40,29 @@ import org.wololo.jts2geojson.GeoJSONWriter;
  * @copyright 2015 <a href="http://www.nibio.no/">NIBIO</a>
  * @author Tor-Einar Skog <tor-einar.skog@nibio.no>
  */
-public class GISUtil {
+public class GISEntityUtil {
 
-    /**
-     * Parses all features from GeoJSON string, returns as JTS Geometry objects
-     * @param json
-     * @return 
-     */
-    public List<Geometry> getGeometriesFromGeoJSON(String json)
+    public String getGeoJSONFromGis(List<Gis> geoinfo, Map<String, Object> properties)
     {
-        FeatureCollection featureCollection = (FeatureCollection) GeoJSONFactory.create(json);
-        GeoJSONReader reader = new GeoJSONReader();
-        List<Geometry> retVal = new ArrayList<>();
-        for(Feature feature: featureCollection.getFeatures())
+        if(geoinfo == null || geoinfo.isEmpty())
         {
-            retVal.add(reader.read(feature.getGeometry()));
+            return "";
         }
-        return retVal;
+        List<Feature> features = new ArrayList<>();
+        GeoJSONWriter writer = new GeoJSONWriter();
+        geoinfo.stream().forEach(
+                (gis)->features.add(new Feature(writer.write(gis.getGisGeom()), properties))
+        );
+       
+        FeatureCollection json = writer.write(features);
+        return json.toString();
     }
     
+    /**
+     * Extract Gis objects from the provided GeoJSON
+     * @param json
+     * @return 
+     */
     public List<Gis> getGisFromGeoJSON(String json)
     {
         if(json == null)
@@ -81,22 +85,7 @@ public class GISUtil {
         }catch(NullPointerException ex) {};
         return retVal;
     }
-    
-    public String getGeoJSONFromGis(List<Gis> geoinfo, Map<String, Object> properties)
-    {
-        if(geoinfo == null || geoinfo.isEmpty())
-        {
-            return "";
-        }
-        List<Feature> features = new ArrayList<>();
-        GeoJSONWriter writer = new GeoJSONWriter();
-        geoinfo.stream().forEach(
-                (gis)->features.add(new Feature(writer.write(gis.getGisGeom()), properties))
-        );
-       
-        FeatureCollection json = writer.write(features);
-        return json.toString();
-    }
+
     
     /**
      * Converts a list of observations to a FeatureCollection
@@ -159,39 +148,7 @@ public class GISUtil {
         return features;
     }
     
-    public String getGeoJSONFromGeometries(List<Geometry> geometries, Map<String, Object> properties)
-    {
-        if(geometries == null || geometries.isEmpty())
-        {
-            return "";
-        }
-        List<Feature> features = new ArrayList<>();
-        GeoJSONWriter writer = new GeoJSONWriter();
-        geometries.stream().forEach((geometry)->features.add(new Feature(writer.write(geometry), properties)));
-        FeatureCollection json = writer.write(features);
-        return json.toString();
-    }
-    
-    public String getGeoJSONFromGeometry(Geometry geometry,Map<String, Object> properties)
-    {
-        if(geometry == null)
-        {
-            return "";
-        }
-        List<Feature> features = new ArrayList<>();
-        GeoJSONWriter writer = new GeoJSONWriter();
-       
-        features.add(new Feature(writer.write(geometry), properties));
-        
-        FeatureCollection json = writer.write(features);
-        return json.toString();
-    }
     
-    public Point createPointWGS84(Coordinate coordinate)
-    {
-        GeometryFactory gf = new GeometryFactory(new PrecisionModel(), 4326);
-        return gf.createPoint(coordinate);
-    }
     
     public de.micromata.opengis.kml.v_2_2_0.Coordinate getKMLCoordinateFromJTSCoordinate(com.vividsolutions.jts.geom.Coordinate jtsCoordinate)
     {
diff --git a/src/test/java/no/nibio/vips/logic/util/GISUtilTest.java b/src/test/java/no/nibio/vips/logic/util/GISEntityUtilTest.java
similarity index 55%
rename from src/test/java/no/nibio/vips/logic/util/GISUtilTest.java
rename to src/test/java/no/nibio/vips/logic/util/GISEntityUtilTest.java
index c10ed46772a44246c55a76151917ae5268e3a21b..c3a8417cd6531b25fefae2334617aaf83d295302 100755
--- a/src/test/java/no/nibio/vips/logic/util/GISUtilTest.java
+++ b/src/test/java/no/nibio/vips/logic/util/GISEntityUtilTest.java
@@ -18,28 +18,22 @@
  */
 package no.nibio.vips.logic.util;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import static org.junit.Assert.*;
-import org.wololo.geojson.Feature;
 import org.wololo.geojson.FeatureCollection;
 import org.wololo.geojson.GeoJSONFactory;
-import org.wololo.geojson.Geometry;
-import org.wololo.geojson.Point;
 
 /**
  *
  * @author treinar
  */
-public class GISUtilTest {
+public class GISEntityUtilTest {
     
-    public GISUtilTest() {
+    public GISEntityUtilTest() {
     }
     
     @BeforeClass
@@ -58,25 +52,7 @@ public class GISUtilTest {
     public void tearDown() {
     }
 
-    /**
-     * Test of getGeometriesFromGeoJSON method, of class GISUtil.
-     */
-    @Test
-    public void testRoundtrip() {
-        System.out.println("testRoundtrip");
-        String json = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[10.669097900390623,59.753628151319106],[10.612792968749998,59.70309199431276],[10.726776123046873,59.705863076677105],[10.669097900390623,59.753628151319106]]]},\"properties\":{\"observationId\":12}},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[10.704803466796873,59.64831609639066]},\"properties\":{\"observationId\":12}},{\"type\":\"Feature\",\"geometry\":{\"type\":\"LineString\",\"coordinates\":[[10.649871826171871,59.67051458978321],[10.791320800781248,59.67328836837126]]},\"properties\":{\"observationId\":12}}]}";
-        System.out.println("JSON=" + json);
-        GISUtil instance = new GISUtil();
-        //List<Geometry> expResult = null;
-        List<com.vividsolutions.jts.geom.Geometry> geometries = instance.getGeometriesFromGeoJSON(json);
-        Map<String, Object> properties = new HashMap<>();
-        properties.put("observationId", 12);
-        String result = instance.getGeoJSONFromGeometries(geometries, properties);
-        //System.out.println(result);
-        assertEquals(json, result);
-        
-        
-    }
+    
     
     
     // Actually testing the helper API
diff --git a/src/test/java/no/nibio/vips/util/weather/YrWeatherForecastProviderTest.java b/src/test/java/no/nibio/vips/util/weather/YrWeatherForecastProviderTest.java
index 8854a232fc606fc9f7f3a5ef8277a3cc23ee595e..8cc2534d9d7aa42d248f3726208857d6b6839fd3 100755
--- a/src/test/java/no/nibio/vips/util/weather/YrWeatherForecastProviderTest.java
+++ b/src/test/java/no/nibio/vips/util/weather/YrWeatherForecastProviderTest.java
@@ -20,13 +20,11 @@ package no.nibio.vips.util.weather;
 
 import com.vividsolutions.jts.geom.Coordinate;
 import com.vividsolutions.jts.geom.Point;
-import no.nibio.vips.util.weather.YrWeatherForecastProvider;
-import no.nibio.vips.util.weather.ParseWeatherDataException;
 import java.util.Collections;
 import java.util.List;
 import no.nibio.vips.entity.WeatherObservation;
 import no.nibio.vips.logic.entity.PointOfInterestWeatherStation;
-import no.nibio.vips.logic.util.GISUtil;
+import no.nibio.vips.gis.GISUtil;
 import no.nibio.vips.util.WeatherUtil;
 import org.junit.After;
 import org.junit.AfterClass;