diff --git a/build.gradle b/build.gradle
index 53804aed205625bfb8f27c5f528b6a290120336e..e22651cef93ba91dd15e93412e642018365982ba 100644
--- a/build.gradle
+++ b/build.gradle
@@ -75,6 +75,7 @@ dependencies {
 	compile(group: 'it.geosolutions', name: 'geoserver-manager', version:'1.5.2') {
 		exclude(module: 'jcl-over-slf4j')
 	}
+	compile group: 'com.google.code.findbugs', name: 'annotations', version: '2.0.3'
 	compile group: 'org.json', name: 'json', version:'20131018'
 	compile(group: 'org.postgis', name: 'postgis-jdbc', version:'1.3+') {
 		exclude(module: 'postgis-stubs')
@@ -127,7 +128,9 @@ eclipse {
 }
 
 findbugs {
+	effort = "max"
 	ignoreFailures = true
+	toolVersion = '2.0.3'
 }
 
 publishing {
diff --git a/src/main/java/it/unibz/inf/isoga/coverage/CoverageBuilder.java b/src/main/java/it/unibz/inf/isoga/coverage/CoverageBuilder.java
index 7ead46b30c9ae1818b999d18a8ef5c0f74545df6..40031b8c375ba165afbc4a586fc7ee0d9445307a 100644
--- a/src/main/java/it/unibz/inf/isoga/coverage/CoverageBuilder.java
+++ b/src/main/java/it/unibz/inf/isoga/coverage/CoverageBuilder.java
@@ -1,7 +1,7 @@
 package it.unibz.inf.isoga.coverage;
 
 import it.unibz.inf.isochrone.util.Enums.Mode;
-import it.unibz.inf.isoga.db.Database;
+import it.unibz.inf.isoga.db.IsogaDatabase;
 import it.unibz.inf.isoga.util.IsogaConfig;
 import it.unibz.inf.isoga.util.SBAUtil;
 
@@ -21,14 +21,14 @@ public class CoverageBuilder {
 	private static final int FULL_CIRCLE_DEGREE = 360;
 	private final IsogaConfig config;
 	private final Mode mode;
-	private final Database db;
+	private final IsogaDatabase db;
 	private final Set<Integer> exploredEdges = new HashSet<Integer>();
 	private long timeBufferQuery;
 
 	public CoverageBuilder(final IsogaConfig config, final Mode mode) {
 		this.config = config;
 		this.mode = mode;
-		db = new Database(config);
+		db = new IsogaDatabase(config);
 	}
 
 	/**
diff --git a/src/main/java/it/unibz/inf/isoga/db/Database.java b/src/main/java/it/unibz/inf/isoga/db/IsogaDatabase.java
similarity index 95%
rename from src/main/java/it/unibz/inf/isoga/db/Database.java
rename to src/main/java/it/unibz/inf/isoga/db/IsogaDatabase.java
index 3245aad14bbf6f46971dbf6c446faf7b8e6c26e5..79cba03e3c5b30207c41f4e75d615a8d7da26bbe 100644
--- a/src/main/java/it/unibz/inf/isoga/db/Database.java
+++ b/src/main/java/it/unibz/inf/isoga/db/IsogaDatabase.java
@@ -1,5 +1,6 @@
 package it.unibz.inf.isoga.db;
 
+import it.unibz.inf.isochrone.db.Database;
 import it.unibz.inf.isochrone.network.Link;
 import it.unibz.inf.isochrone.network.Location;
 import it.unibz.inf.isochrone.network.Node;
@@ -33,12 +34,14 @@ import org.postgis.LinearRing;
 import org.postgis.PGgeometry;
 import org.postgis.Polygon;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * This class contains Database queries specific to the Isoga web
  * interface. (Mostly inserting vertices and links into the tables
  * used for the GeoServer)
  */
-public class Database extends it.unibz.inf.isochrone.db.Database {
+public class IsogaDatabase extends Database {
 	private final String queryGetIsoEdges;
 	private final String queryStoreLinks;
 	private final String queryStorePartialLinks;
@@ -46,7 +49,7 @@ public class Database extends it.unibz.inf.isochrone.db.Database {
 	private final String queryInsertVertexAnnotation;
 	private final String queryUpdateVertices;
 
-	public Database(final IsogaConfig cfg) {
+	public IsogaDatabase(final IsogaConfig cfg) {
 		super(cfg);
 
 		queryGetIsoEdges = "SELECT E.\"ID\", E.\"SOURCE\", V.\"DISTANCE\" DISTANCE, E.\"TARGET\", E.\"OFFSET\", E.\"LENGTH\",E.\"GEOMETRY\" FROM "
@@ -74,7 +77,7 @@ public class Database extends it.unibz.inf.isochrone.db.Database {
 				+ cfg.getDestinationVertexTableEntry().getTableName() + ".\"ROUTE_ID\">=0";
 	}
 
-	public Database(final IsogaConfig config, final Mode mode) {
+	public IsogaDatabase(final IsogaConfig config, final Mode mode) {
 		this(config);
 		this.mode = mode;
 	}
@@ -128,15 +131,19 @@ public class Database extends it.unibz.inf.isochrone.db.Database {
 		}
 	}
 
+	@SuppressFBWarnings(
+		value = "DLS_DEAD_LOCAL_STORE",
+		justification = "False positiv in DLS_DEAD_LOCAL_STORE check"
+	)
 	public Collection<IsoEdge> getIsochroneEdges(final int dMax, final double speed) {
 		final boolean avoidNonPartialDuplicates = false;
 		final Collection<IsoEdge> isoEdges = new ArrayList<IsoEdge>();
 		final Map<String, IsoEdge> addedLinks = new HashMap<String, IsoEdge>();
+
 		PreparedStatement statement = null;
 		ResultSet resultSet = null;
 		try {
 			statement = getPstmt(queryGetIsoEdges);
-
 			resultSet = statement.executeQuery();
 			while (resultSet.next()) {
 				final int edgeId = resultSet.getInt("ID");
@@ -161,15 +168,18 @@ public class Database extends it.unibz.inf.isochrone.db.Database {
 					edge.setEndOffset(adjNodeOffset);
 					edge.setRemainingDistance(adjNodeOffset < length ? 0 : dMax - edge.getAdjNodeDistance() * speed);
 				}
+
 				if (avoidNonPartialDuplicates) {
-					if (addedLinks.containsKey(edge.getInvertedIdentifier())) {
-						final IsoEdge invertedEdge = addedLinks.get(edge.getInvertedIdentifier());
-						if (invertedEdge.isPartial()) { // inverted is partial
-							addedLinks.put(edge.getIdentifier(), edge);
+					final String invertedId = edge.getInvertedIdentifier();
+					final String id = edge.getIdentifier();
+					if (addedLinks.containsKey(invertedId)) {
+						final IsoEdge invertedEdge = addedLinks.get(invertedId);
+						if (invertedEdge.isPartial()) {
+							addedLinks.put(id, edge);
 							isoEdges.add(edge);
 						}
 					} else {
-						addedLinks.put(edge.getIdentifier(), edge);
+						addedLinks.put(id, edge);
 						isoEdges.add(edge);
 					}
 				} else {
@@ -181,6 +191,7 @@ public class Database extends it.unibz.inf.isochrone.db.Database {
 		} finally {
 			DbUtils.closeQuietly(resultSet);
 		}
+
 		return isoEdges;
 	}
 
diff --git a/src/main/java/it/unibz/inf/isoga/network/MemoryBBoxOutput.java b/src/main/java/it/unibz/inf/isoga/network/MemoryBBoxOutput.java
index 6da0c444f09e627efd42ab36f10d25ce75f3df64..5cc075c5354dd5c661bb94dde0cb66b371fe1b6f 100644
--- a/src/main/java/it/unibz/inf/isoga/network/MemoryBBoxOutput.java
+++ b/src/main/java/it/unibz/inf/isoga/network/MemoryBBoxOutput.java
@@ -2,7 +2,7 @@ package it.unibz.inf.isoga.network;
 
 import it.unibz.inf.isochrone.network.MemoryOutput;
 import it.unibz.inf.isochrone.network.Node;
-import it.unibz.inf.isoga.db.Database;
+import it.unibz.inf.isoga.db.IsogaDatabase;
 import it.unibz.inf.isoga.geometry.BBox;
 import it.unibz.inf.isoga.util.IsogaConfig;
 
@@ -22,7 +22,7 @@ import org.apache.commons.dbutils.DbUtils;
 public class MemoryBBoxOutput extends MemoryOutput {
 	private final Set<Node> nodes = new HashSet<Node>();
 
-	public void storeAll(final IsogaConfig config, final Database db) {
+	public void storeAll(final IsogaConfig config, final IsogaDatabase db) {
 		db.storeLinks(links.values(), config);
 		db.storeVertices(nodes, config);
 	}
diff --git a/src/main/java/it/unibz/inf/isoga/service/ServiceIsochrone.java b/src/main/java/it/unibz/inf/isoga/service/ServiceIsochrone.java
index 3f6ed5cc3fdad504307e9eeca02677de2591fb1d..cbdf940359c6e5d07e343d1cfb1767c2af6dc0c6 100644
--- a/src/main/java/it/unibz/inf/isoga/service/ServiceIsochrone.java
+++ b/src/main/java/it/unibz/inf/isoga/service/ServiceIsochrone.java
@@ -13,7 +13,7 @@ import it.unibz.inf.isochrone.util.Query;
 import it.unibz.inf.isoga.coverage.CoverageBuilder;
 import it.unibz.inf.isoga.datastructure.QueryPoint;
 import it.unibz.inf.isoga.db.DBUtility;
-import it.unibz.inf.isoga.db.Database;
+import it.unibz.inf.isoga.db.IsogaDatabase;
 import it.unibz.inf.isoga.network.MemoryBBoxOutput;
 import it.unibz.inf.isoga.util.IsogaConfig;
 import it.unibz.inf.isoga.util.DSetConfig;
@@ -147,7 +147,7 @@ public class ServiceIsochrone extends AbstractService {
 //			public void run() {
 				final long start = System.currentTimeMillis();
 				config.setDirection(direction);
-				final Database db = new Database(config, mode);
+				final IsogaDatabase db = new IsogaDatabase(config, mode);
 				truncateTables(config);
 				final Query query = new Query(direction, speed, dMaxInMinutes * 60, date, true, dataset, mode);
 				query.setLocations(locationsFromQueryPoints(qPoints, new IsogaConfig(dataset)));
@@ -232,7 +232,7 @@ public class ServiceIsochrone extends AbstractService {
 		}
 
 		final Set<Location> locations = new HashSet<Location>(queryPoints.size());
-		final Database db = new Database(config);
+		final IsogaDatabase db = new IsogaDatabase(config);
 		for (final QueryPoint qPoint : queryPoints) {
 			locations.addAll(db.projectOnLinks(qPoint));
 		}
diff --git a/src/main/java/it/unibz/inf/isoga/util/SBAUtil.java b/src/main/java/it/unibz/inf/isoga/util/SBAUtil.java
index 8df4c08b10abd7bead81fbb0e2ef439c3e07c61c..1d3ca25bd1d03aadd0fc0146e926f919d1d3a1e8 100644
--- a/src/main/java/it/unibz/inf/isoga/util/SBAUtil.java
+++ b/src/main/java/it/unibz/inf/isoga/util/SBAUtil.java
@@ -83,10 +83,12 @@ public final class SBAUtil {
 		if (relativeAngle < 0) {
 			relativeAngle = Math.toDegrees(2 * Math.PI) + relativeAngle;
 		}
-		if (relativeAngle == Double.NaN) {
+
+		if (Double.isNaN(relativeAngle) || Double.isInfinite(relativeAngle)) {
 			System.err.println("Problems with angle computation.");
 			return Double.MAX_VALUE;
 		}
+
 		return relativeAngle;
 	}
 
diff --git a/src/main/java/it/unibz/inf/isoga/websocket/SocketConfiguration.java b/src/main/java/it/unibz/inf/isoga/websocket/SocketConfiguration.java
index eff04ac054cf22b2d141c401b625a94feab02d0a..a5fb60cac18e7003af880e4b35f82b71ccb0c4d3 100644
--- a/src/main/java/it/unibz/inf/isoga/websocket/SocketConfiguration.java
+++ b/src/main/java/it/unibz/inf/isoga/websocket/SocketConfiguration.java
@@ -9,7 +9,7 @@ import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
 import it.unibz.inf.isochrone.util.Enums.Dataset;
 import it.unibz.inf.isochrone.util.Point;
 import it.unibz.inf.isoga.db.DBUtility;
-import it.unibz.inf.isoga.db.Database;
+import it.unibz.inf.isoga.db.IsogaDatabase;
 import it.unibz.inf.isoga.db.TableEntry;
 import it.unibz.inf.isoga.geometry.BBox;
 import it.unibz.inf.isoga.util.IsogaConfig;
@@ -266,7 +266,7 @@ public final class SocketConfiguration {
 				e.printStackTrace();
 			}
 
-			final Database db = new Database(config);
+			final IsogaDatabase db = new IsogaDatabase(config);
 			final BBox clientBBox = new BBox(db.transform(lowerCorner), db.transform(upperCorner));
 			final Point queryPoint = db.transform(new Point(Double.valueOf(poiProperty[0]), Double.valueOf(poiProperty[1])));