Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java	(revision 9618)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java	(revision 9619)
@@ -43,6 +43,6 @@
 	 * Vectors for clock-wise tile painting
 	 */
-	protected static final Point[] move =
-			{ new Point(1, 0), new Point(0, 1), new Point(-1, 0), new Point(0, -1) };
+	protected static final Point[] move = { new Point(1, 0), new Point(0, 1),
+			new Point(-1, 0), new Point(0, -1) };
 
 	public static final int MAX_ZOOM = 18;
@@ -102,6 +102,6 @@
 		setPreferredSize(new Dimension(400, 400));
 		try {
-			loadingImage =
-					ImageIO.read(JMapViewer.class.getResourceAsStream("images/hourglass.png"));
+			loadingImage = ImageIO.read(JMapViewer.class
+					.getResourceAsStream("images/hourglass.png"));
 		} catch (Exception e1) {
 			loadingImage = null;
@@ -123,5 +123,6 @@
 		int size = 18;
 		try {
-			ImageIcon icon = new ImageIcon(getClass().getResource("images/plus.png"));
+			ImageIcon icon = new ImageIcon(getClass().getResource(
+					"images/plus.png"));
 			zoomInButton = new JButton(icon);
 		} catch (Exception e) {
@@ -139,5 +140,6 @@
 		add(zoomInButton);
 		try {
-			ImageIcon icon = new ImageIcon(getClass().getResource("images/minus.png"));
+			ImageIcon icon = new ImageIcon(getClass().getResource(
+					"images/minus.png"));
 			zoomOutButton = new JButton(icon);
 		} catch (Exception e) {
@@ -168,5 +170,6 @@
 	 */
 	public void setDisplayPositionByLatLon(double lat, double lon, int zoom) {
-		setDisplayPositionByLatLon(new Point(getWidth() / 2, getHeight() / 2), lat, lon, zoom);
+		setDisplayPositionByLatLon(new Point(getWidth() / 2, getHeight() / 2),
+				lat, lon, zoom);
 	}
 
@@ -186,5 +189,6 @@
 	 *            {@link #MIN_ZOOM} <= zoom level <= {@link #MAX_ZOOM}
 	 */
-	public void setDisplayPositionByLatLon(Point mapPoint, double lat, double lon, int zoom) {
+	public void setDisplayPositionByLatLon(Point mapPoint, double lat,
+			double lon, int zoom) {
 		int x = OsmMercator.LonToX(lon, zoom);
 		int y = OsmMercator.LatToY(lat, zoom);
@@ -193,5 +197,6 @@
 
 	public void setDisplayPosition(int x, int y, int zoom) {
-		setDisplayPosition(new Point(getWidth() / 2, getHeight() / 2), x, y, zoom);
+		setDisplayPosition(new Point(getWidth() / 2, getHeight() / 2), x, y,
+				zoom);
 	}
 
@@ -329,5 +334,6 @@
 					x++;
 				for (int z = 0; z < x; z++) {
-					if (x_min <= posx && posx <= x_max && y_min <= posy && posy <= y_max) { // tile
+					if (x_min <= posx && posx <= x_max && y_min <= posy
+							&& posy <= y_max) { // tile
 						// is
 						// visible
@@ -444,5 +450,6 @@
 		}
 		if (!tile.isLoaded()) {
-			tileLoader.addLoadRequest(tilex, tiley, zoom);
+			jobDispatcher.addJob(tileLoader.createTileLoaderJob(tilex, tiley,
+					zoom));
 		}
 		return tile;
Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java	(revision 9618)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java	(revision 9619)
@@ -14,4 +14,5 @@
 import java.net.URLConnection;
 
+import org.openstreetmap.gui.jmapviewer.interfaces.Job;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileCache;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
@@ -56,9 +57,9 @@
 	}
 
-	public void addLoadRequest(final int tilex, final int tiley, final int zoom) {
-		map.jobDispatcher.addJob(new FileLoadJob(tilex, tiley, zoom));
-	}
-
-	protected class FileLoadJob implements Runnable {
+	public Job createTileLoaderJob(final int tilex, final int tiley, final int zoom) {
+		return new FileLoadJob(tilex, tiley, zoom);
+	}
+
+	protected class FileLoadJob implements Job {
 		InputStream input = null;
 
@@ -210,4 +211,7 @@
 			}
 		}
+
+		public void stop() {
+		}
 	}
 
Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java	(revision 9618)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java	(revision 9619)
@@ -35,6 +35,7 @@
 	}
 
-	public void addLoadRequest(final int tilex, final int tiley, final int zoom) {
-		map.jobDispatcher.addJob(new Job() {
+	public Job createTileLoaderJob(final int tilex, final int tiley,
+			final int zoom) {
+		return new Job() {
 
 			InputStream input = null;
@@ -77,5 +78,5 @@
 				}
 			}
-		});
+		};
 	}
 
Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java	(revision 9618)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java	(revision 9619)
@@ -5,7 +5,5 @@
 /**
  * Interface for implementing a tile loader. Tiles are usually loaded via HTTP
- * or from a file. The {@link TileLoader} implementation is responsible for
- * performing the loading action asynchronously by creating a new
- * {@link Runnable} or {@link Job}.
+ * or from a file.
  * 
  * @author Jan Peter Stotz
@@ -14,13 +12,14 @@
 
 	/**
-	 * A typical {@link #addLoadRequest(int, int, int)} implementation should
-	 * create a new {@link Job} instance that performs the load action. This
-	 * {@link Job} instance is then handed over to
-	 * <code>map.jobDispatcher</code>.
+	 * A typical {@link #createTileLoaderJob(int, int, int)} implementation
+	 * should create and return a new {@link Job} instance that performs the
+	 * load action.
 	 * 
 	 * @param tilex
 	 * @param tiley
 	 * @param zoom
+	 * @returns {@link Job} implementation that performs the desired load
+	 *          action.
 	 */
-	public void addLoadRequest(int tilex, int tiley, int zoom);
+	public Job createTileLoaderJob(int tilex, int tiley, int zoom);
 }
