diff --git a/src/main/java/it/unibz/inf/isochrone/util/Query.java b/src/main/java/it/unibz/inf/isochrone/util/Query.java
index 9ff785fa7ac399bee99bd66ba5e5616968a3e290..ea14afac4a1daa3450d212b63be4489d4051955c 100644
--- a/src/main/java/it/unibz/inf/isochrone/util/Query.java
+++ b/src/main/java/it/unibz/inf/isochrone/util/Query.java
@@ -32,8 +32,7 @@ public class Query {
 	 * Construct a query object with every field except the nodes and
 	 * locations.  Remember to set them afterward!!
 	 */
-	public Query(final Direction dir, final double walkingSpeed, final long duration,
-			final Calendar time, final boolean expireNodes, final Mode mode) {
+	public Query(final Direction dir, final double walkingSpeed, final long duration, final Calendar time, final boolean expireNodes, final Mode mode) {
 		this.dir = dir;
 		this.walkingSpeed = walkingSpeed;
 		this.duration = duration;
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 24264f67b457d4af41f9165a70e54d2f105d58ff..948869753a3f921aa26f3230c2e01dc128c1a9b2 100644
--- a/src/main/java/it/unibz/inf/isoga/coverage/CoverageBuilder.java
+++ b/src/main/java/it/unibz/inf/isoga/coverage/CoverageBuilder.java
@@ -37,14 +37,16 @@ public class CoverageBuilder {
 	}
 
 	/**
-	 * Creates the area of isochrones using the link based approach. It creates around each link a buffer and stored them
-	 * in the DB.
+	 * Creates the area of isochrones using the link based approach.
+	 * It creates a buffer around each link and stores them in the DB.
+	 *
+	 * @param bufferSize the size of the buffer used
 	 */
-	public void createIsoAreaLBA(final double bufferDistance) {
+	public void createIsoAreaLBA(final double bufferSize) {
 		final String tableArea = config.getAreaBufferTableEntry().getTableName();
 		final String tableEdge = config.getEdgeTableEntry().getTableName();
 
-		db.createBuffer(tableArea, tableEdge, bufferDistance);
+		db.createBuffer(tableArea, tableEdge, bufferSize);
 	}
 
 	/**
@@ -54,8 +56,12 @@ public class CoverageBuilder {
 	 * retrieving the source link, the polygon is created and with a surrounded buffer it is stored in the DB. Then the
 	 * links laying within that buffer are not considered anymore for the next calculation. The procedure terminates when
 	 * all links are processed.
+	 *
+	 * @param dMax the time maximum distance used for creating the isochrone
+	 * @param speed the speed used for creating the isochrone
+	 * @param bufferSize the size of the buffer used for creating the isochrone's area
 	 */
-	public void createIsoAreaSBA(final long dMax, final double bufferDistance, final double speed) {
+	public void createIsoAreaSBA(final long dMax, final double speed, final double bufferSize) {
 		final Collection<IsoEdge> isoEdges = db.getIsochroneEdges(dMax, speed, direction);
 		final boolean isIncoming = direction == Direction.INCOMING;
 		int areaId = 0;
@@ -66,7 +72,7 @@ public class CoverageBuilder {
 
 		while (!isochrone.isEmpty()) {
 			createMargins(isochrone);
-			db.storeArea(areaId, isochrone.getOrdinates(), bufferDistance);
+			db.storeArea(areaId, isochrone.getOrdinates(), bufferSize);
 			isochrone.deleteOrdinates();
 			if (mode == Mode.MULTIMODAL) {
 				final long start = System.currentTimeMillis();
@@ -168,14 +174,13 @@ public class CoverageBuilder {
 			final Set<IsoEdge> adjEdges, final boolean useLastPoint) {
 		final TreeMap<Double, IsoEdge> angleLinks = new TreeMap<Double, IsoEdge>();
 		final TreeMap<Double, List<IsoEdge>> duplicates = new TreeMap<Double, List<IsoEdge>>();
-		final double referenceAngle = MathHelper.calculateAngle(useLastPointRef, referenceEdge);
+		final double referenceAngle = MathHelper.calculateAngle(referenceEdge.getGeometry(), useLastPointRef);
 		for (final IsoEdge currentLink : adjEdges) {
 			if (!currentLink.equals(referenceEdge)) {
 				if (currentLink.inverted(referenceEdge)) {
 					angleLinks.put((double) FULL_CIRCLE_DEGREE, currentLink);
 				} else {
-					final double angle = MathHelper.calcultateRelativeAngle(MathHelper.calculateAngle(useLastPoint, currentLink),
-							referenceAngle);
+					final double angle = MathHelper.calcultateRelativeAngle(MathHelper.calculateAngle(currentLink.getGeometry(), useLastPoint), referenceAngle);
 					final IsoEdge previous = angleLinks.put(angle, currentLink);
 					if (previous != null) {
 						if (!duplicates.containsKey(angle)) {
diff --git a/src/main/java/it/unibz/inf/isoga/db/DbHelper.java b/src/main/java/it/unibz/inf/isoga/db/DbHelper.java
index 3c448cd94e346eb69a00cc68e5d018d035d25d5e..3797dea3748abf3a6c72beedf406474ec709808f 100644
--- a/src/main/java/it/unibz/inf/isoga/db/DbHelper.java
+++ b/src/main/java/it/unibz/inf/isoga/db/DbHelper.java
@@ -4,7 +4,7 @@ import java.sql.Types;
 
 /**
  * Converts a JDBC types to text.
- * 
+ *
  * @author Markus Innerebner
  * @version 2.2
  */
@@ -14,6 +14,9 @@ public final class DbHelper {
 
 	/**
 	 * Maps the JDBC type to the corresponding text.
+	 *
+	 * @param value type to match (int-value referencing java.sql.Types)
+	 * @return the string representing the JDBY type (int, float or string)
 	 */
 	public static String getType(final int value) {
 		switch (value) {
diff --git a/src/main/java/it/unibz/inf/isoga/db/SqlQuery.java b/src/main/java/it/unibz/inf/isoga/db/SqlQuery.java
index 190cb189fdac2dd794fc6e05e04b9d6ca4cb6149..29937966ab040f52cf7e128d356937fc3d2da6a9 100644
--- a/src/main/java/it/unibz/inf/isoga/db/SqlQuery.java
+++ b/src/main/java/it/unibz/inf/isoga/db/SqlQuery.java
@@ -1,7 +1,7 @@
 package it.unibz.inf.isoga.db;
 
-import it.unibz.inf.isochrone.config.ConfigIsochrone;
 import it.unibz.inf.isochrone.config.ConfigDataset;
+import it.unibz.inf.isochrone.config.ConfigIsochrone;
 import it.unibz.inf.isochrone.util.EnumContainer.QueryType;
 
 import java.util.HashSet;
@@ -13,7 +13,6 @@ import java.util.Set;
  */
 public class SqlQuery {
 	private static final char ALIAS_COV = 'X';
-	private boolean queryable = false;
 	private final String coverageTable;
 	private String queriedRelation;
 	private final String spatialPredicate;
@@ -27,11 +26,11 @@ public class SqlQuery {
 	private String whereClause;
 
 	public SqlQuery(final String sqlExpr, final String coverageTable, final String spatialPredicate) {
-		queryable = sqlExpr.startsWith("select");
-		this.spatialPredicate = spatialPredicate;
 		this.coverageTable = coverageTable;
-		if (queryable) {
-			parseSQL(sqlExpr.replace("select", "").trim());
+		this.spatialPredicate = spatialPredicate;
+
+		if (sqlExpr.startsWith("SELECT")) {
+			parseSQL(sqlExpr.replace("SELECT", "").trim());
 		} else {
 			queryType = QueryType.INVALID;
 		}
@@ -40,7 +39,7 @@ public class SqlQuery {
 	private void parseSQL(final String sqlStr) {
 		boolean withAlias = false;
 		final Scanner s1 = new Scanner(sqlStr);
-		s1.useDelimiter("from");
+		s1.useDelimiter("FROM");
 		// extract projection attributes
 		final String[] prjAttributes = s1.next().split(",");
 		for (final String attr : prjAttributes) {
@@ -69,7 +68,7 @@ public class SqlQuery {
 			// extract table name
 			final String subStr = s1.next();
 			final Scanner s2 = new Scanner(subStr);
-			s2.useDelimiter("where");
+			s2.useDelimiter("WHERE");
 			final String t = s2.next().trim();
 			final String relation = !withAlias ? t : t + " " + inputAlias;
 			// extracts selection / filter attributes
@@ -114,7 +113,7 @@ public class SqlQuery {
 		s1.close();
 
 		final String prj = projectors.iterator().next();
-		if (prj.contains("count(")) {
+		if (prj.contains("COUNT(")) {
 			queryType = QueryType.COUNT;
 		} else if (prj.contains("sum(")) {
 			queryType = QueryType.SUM;
@@ -122,7 +121,7 @@ public class SqlQuery {
 			queryType = QueryType.SELECT;
 		}
 
-		fromClause = " from " + queriedRelation + " " + inputAlias + ",";
+		fromClause = " FROM " + queriedRelation + " " + inputAlias + ",";
 
 		if (!spatialPredicate.equalsIgnoreCase("ST_Within")) {
 			fromClause += "(select st_union(\"GEOMETRY\") as \"GEOMETRY\" from " + coverageTable + ") as " + ALIAS_COV;
@@ -134,12 +133,16 @@ public class SqlQuery {
 	}
 
 	/**
-	 * <p>Method getSpatialQueryString creates the sql expression joined with the isochrone. In case of a SELECT it additionally projects the geometry in geojson format as a string</p>
+	 * Creates the SQL-expression joined with the isochrone.
+	 * In case of a SELECT-statement it additionally projects the geometry in GeoJson format (as a string)
+	 *
+	 * @param config the dataset configuration used to create the expression
+	 * @return the SQL-expression
 	 */
 	public String getSpatialQueryString(final ConfigDataset config) {
 		final StringBuilder b = new StringBuilder();
 		// create query with
-		b.append("select ");
+		b.append("SELECT ");
 		int i = 0;
 		for (final String proj : projectors) {
 			b.append(i > 0 ? "," + proj : proj);
@@ -149,13 +152,13 @@ public class SqlQuery {
 		if (queryType.equals(QueryType.SELECT)) {
 			final int clientSRID = ConfigIsochrone.getInstance().getClientSRID();
 			final String geom = clientSRID == config.getServerSRID() ? (inputAlias + ".\"GEOMETRY\"") : ("ST_Transform(" + inputAlias + ".\"GEOMETRY\", " + clientSRID + ")");
-			b.append(",ST_AsGeoJSON(").append(geom).append(") geometry");
+			b.append(", ST_AsGeoJSON(").append(geom).append(") geometry");
 		}
 		// append the relations
 		b.append(fromClause);
 
 		// append selections
-		b.append(" where ");
+		b.append(" WHERE ");
 		if (!filters.isEmpty()) {
 			b.append("(");
 			i = 0;
@@ -168,6 +171,7 @@ public class SqlQuery {
 		} else {
 			b.append(spatialJoinPredicate);
 		}
+
 		return b.toString();
 	}
 
@@ -180,23 +184,26 @@ public class SqlQuery {
 	}
 
 	public String getStatistics(final boolean withSpatialJoin) {
-		String s = "select count(*) from " + queriedRelation + " " + inputAlias;
+		StringBuilder sb = new StringBuilder("SELECT COUNT(*) FROM ");
+		sb.append(queriedRelation).append(" ").append(inputAlias);
+
 		if (withSpatialJoin) {
-			s += "xxx";
-		} else {
-			return s + (whereClause == null ? "" : " where " + whereClause);
+			sb.append("xxx");
+		} else if (whereClause != null) {
+			sb.append(" WHERE ").append(whereClause);
 		}
-		return s;
+
+		return sb.toString();
 	}
 
 	public String getStatisticsWithSum(final boolean withSpatialJoin) {
 		final StringBuilder b = new StringBuilder();
 		final String prj = projectors.iterator().next();
-		b.append("select ").append(prj).append(",count(*) from ");
+		b.append("SELECT ").append(prj).append(", COUNT(*) FROM ");
 		if (withSpatialJoin) {
 			b.append("xxx");
 		} else {
-			b.append(queriedRelation).append(" ").append(inputAlias).append(" where ").append(whereClause);
+			b.append(queriedRelation).append(" ").append(inputAlias).append(" WHERE ").append(whereClause);
 		}
 
 		return b.toString();
diff --git a/src/main/java/it/unibz/inf/isoga/service/AbstractService.java b/src/main/java/it/unibz/inf/isoga/service/AbstractService.java
index 429eb267651a4422a79420890fdbd5218cb30f97..48cfd01d111b6a89de5fd09d5b6acf8d796b397d 100644
--- a/src/main/java/it/unibz/inf/isoga/service/AbstractService.java
+++ b/src/main/java/it/unibz/inf/isoga/service/AbstractService.java
@@ -38,8 +38,11 @@ public abstract class AbstractService<T extends IRequest, U extends IResponse> i
 
 	/**
 	 * Creates the database tables and new layers for every session.
+	 *
+	 * @param connection the database connection used to create the tables
+	 * @param configClient the configuration containing the tables and layer names which are created/registered.
 	 */
-	protected void registerLayers(final Connection connection, final ConfigClient configClient) {
+	protected void registerTableAndLayers(final Connection connection, final ConfigClient configClient) {
 		final ConfigGeoserver configGeoserver = ConfigGeoserver.getInstance();
 		final GeoServerRESTPublisher publisher = configGeoserver.getGeoServerPublisher();
 		final String ws = configGeoserver.getRenderServerWorkspace();
diff --git a/src/main/java/it/unibz/inf/isoga/service/ServiceConfiguration.java b/src/main/java/it/unibz/inf/isoga/service/ServiceConfiguration.java
index fdc7e8e6ca12b4728e7573790293a0fb6993ec54..56a98569d66fa3de21a111e44d5537a7bacd33d0 100644
--- a/src/main/java/it/unibz/inf/isoga/service/ServiceConfiguration.java
+++ b/src/main/java/it/unibz/inf/isoga/service/ServiceConfiguration.java
@@ -65,7 +65,7 @@ public class ServiceConfiguration extends AbstractService<RequestConfiguration,
 
 		for (Dataset dataset : PREREGISTERING_DATASETS) {
 			final ConfigClient configClient = ConfigClient.getInstance(clientId, dataset);
-			registerLayers(connection, configClient);
+			registerTableAndLayers(connection, configClient);
 		}
 	}
 
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 d969bafb5e85f712cb3441aa502b76426bfc034d..650be3e843fa8be33d2b63a4ad94d03eccdf6ed2 100644
--- a/src/main/java/it/unibz/inf/isoga/service/ServiceIsochrone.java
+++ b/src/main/java/it/unibz/inf/isoga/service/ServiceIsochrone.java
@@ -59,7 +59,7 @@ public class ServiceIsochrone extends AbstractService<RequestIsochrone, Response
 
 		// register layers which have not been preregistered in ServiceConfiguration class
 		if (!config.isRegistered()) {
-			registerLayers(ConfigIsochrone.getInstance().getConnection(), config);
+			registerTableAndLayers(ConfigIsochrone.getInstance().getConnection(), config);
 		}
 
 		// Timing start
@@ -83,7 +83,7 @@ public class ServiceIsochrone extends AbstractService<RequestIsochrone, Response
 			if (coverageMode == CoverageMode.BUFFER) {
 				coverage.createIsoAreaLBA(BUFFER_DISTANCE);
 			} else if (coverageMode == CoverageMode.SURFACE) {
-				coverage.createIsoAreaSBA(request.getDmax(), BUFFER_DISTANCE, request.getSpeed());
+				coverage.createIsoAreaSBA(request.getDmax(), request.getSpeed(), BUFFER_DISTANCE);
 			}
 		}
 
diff --git a/src/main/java/it/unibz/inf/isoga/util/MathHelper.java b/src/main/java/it/unibz/inf/isoga/util/MathHelper.java
index df3561a54b0b94104ffd04184319ad49bef78ad9..4183e0bcb5f954edd12814d843e3d02538e40fff 100644
--- a/src/main/java/it/unibz/inf/isoga/util/MathHelper.java
+++ b/src/main/java/it/unibz/inf/isoga/util/MathHelper.java
@@ -2,6 +2,7 @@ package it.unibz.inf.isoga.util;
 
 import it.unibz.inf.isochrone.util.Point;
 import it.unibz.inf.isoga.coverage.IsoEdge;
+import it.unibz.inf.isoga.geometry.AbstractLineString;
 
 /**
  * Mathematical helper functions.
@@ -12,19 +13,22 @@ public final class MathHelper {
 	private MathHelper() { }
 
 	/**
-	 * @param toLink
-	 * @return the angle between the last point and the second last one
+	 * Calculates the angle for an AbstractLineString.
+	 *
+	 * @param line the lineString object containing the points for which the angle should be calculated.
+	 * @param useLastPoint if this is set to true, then not the angle between the first two points will be calculated, but the angle between the last two points of the lineString
+	 * @return the angle between the first and the second point (or - if useLastPoint is true - between the last and the second last point)
 	 */
-	public static double calculateAngle(final boolean fromLast, final IsoEdge toLink) {
+	public static double calculateAngle(final AbstractLineString line, final boolean useLastPoint) {
 		Point intermediate = null;
 		Point toPoint = null;
 
-		if (fromLast) {
-			intermediate = toLink.getGeometry().getLastPoint();
-			toPoint = toLink.getGeometry().getPoint(toLink.getGeometry().numPoints() - 2);
+		if (useLastPoint) {
+			intermediate = line.getLastPoint();
+			toPoint = line.getPoint(line.numPoints() - 2);
 		} else {
-			intermediate = toLink.getGeometry().getFirstPoint();
-			toPoint = toLink.getGeometry().getPoint(1);
+			intermediate = line.getFirstPoint();
+			toPoint = line.getPoint(1);
 		}
 
 		return calculateAngle(intermediate, toPoint);
@@ -62,16 +66,23 @@ public final class MathHelper {
 		return difference;
 	}
 
-	public static double calculateAngle(final Point fromPoint, final Point toPoint) {
-		final double deltaX = toPoint.getX() - fromPoint.getX();
-		final double deltaY = toPoint.getY() - fromPoint.getY();
+	/**
+	 * Calculates the angle between two points.
+	 *
+	 * @param p1 first point to calculate the angles between (starting point)
+	 * @param p2 second point to calculate the angles between (ending point)
+	 * @return the angle between the given points
+	 */
+	public static double calculateAngle(final Point p1, final Point p2) {
+		final double deltaX = p2.getX() - p1.getX();
+		final double deltaY = p2.getY() - p1.getY();
 		if (deltaX == 0 && deltaY == 0) {
 			return Double.NaN;
 		}
 
 		double angle = Math.toDegrees(Math.atan2(deltaY, deltaX));
 		if (angle < 0) {
-			angle = Math.toDegrees(2 * Math.PI) + angle;
+			return Math.toDegrees(2 * Math.PI) + angle;
 		}
 
 		return angle;
@@ -92,7 +103,7 @@ public final class MathHelper {
 	}
 
 	/**
-	 * check if a link is reached from both sides.
+	 * Checks if a link is reached from both sides.
 	 *
 	 * @param link the link to be checked
 	 * @param inverted the inverted link (may also be null)