diff --git a/vtm-extras/src/org/oscim/tiling/source/oscimap/TileDecoder.java b/vtm-extras/src/org/oscim/tiling/source/oscimap/TileDecoder.java
index 1b0f5f26..66e8948a 100644
--- a/vtm-extras/src/org/oscim/tiling/source/oscimap/TileDecoder.java
+++ b/vtm-extras/src/org/oscim/tiling/source/oscimap/TileDecoder.java
@@ -369,7 +369,7 @@ public class TileDecoder extends PbfDecoder {
 
 		decodeVarintArray(indexCnt, mElem.index);
 
-		short[] index = mElem.index;
+		int[] index = mElem.index;
 		int coordCnt = 0;
 
 		for (int i = 0; i < indexCnt; i++) {
diff --git a/vtm-extras/src/org/oscim/tiling/source/oscimap2/OSciMap2TileSource.java b/vtm-extras/src/org/oscim/tiling/source/oscimap2/OSciMap2TileSource.java
index 54aa0bf9..cfaf7142 100644
--- a/vtm-extras/src/org/oscim/tiling/source/oscimap2/OSciMap2TileSource.java
+++ b/vtm-extras/src/org/oscim/tiling/source/oscimap2/OSciMap2TileSource.java
@@ -65,7 +65,7 @@ public class OSciMap2TileSource extends UrlTileSource {
 		private static final int TAG_ELEM_MIN_HEIGHT = 32;
 		private static final int TAG_ELEM_PRIORITY = 41;
 
-		private short[] mSArray;
+		private int[] mSArray;
 		private final TagSet mTileTags;
 		private final MapElement mElem;
 
@@ -82,7 +82,7 @@ public class OSciMap2TileSource extends UrlTileSource {
 			mTileTags = new TagSet(20);
 
 			// temp array for decoding shorts
-			mSArray = new short[100];
+			mSArray = new int[100];
 		}
 
 		@Override
@@ -115,7 +115,7 @@ public class OSciMap2TileSource extends UrlTileSource {
 					case TAG_TILE_TAG_KEYS:
 						int len = numTags;
 						if (mSArray.length < len)
-							mSArray = new short[len];
+							mSArray = new int[len];
 
 						decodeVarintArray(numTags, mSArray);
 						break;
@@ -163,7 +163,7 @@ public class OSciMap2TileSource extends UrlTileSource {
 			mElem.ensureIndexSize(indexCnt, false);
 			decodeVarintArray(indexCnt, mElem.index);
 
-			short[] index = mElem.index;
+			int[] index = mElem.index;
 			int coordCnt = 0;
 
 			for (int i = 0; i < indexCnt; i++) {
diff --git a/vtm/src/org/oscim/core/GeometryBuffer.java b/vtm/src/org/oscim/core/GeometryBuffer.java
index 3e8419cb..60b7ed1b 100644
--- a/vtm/src/org/oscim/core/GeometryBuffer.java
+++ b/vtm/src/org/oscim/core/GeometryBuffer.java
@@ -56,7 +56,7 @@ public class GeometryBuffer {
 	public float[] points;
 
 	/** The indexes. */
-	public short[] index;
+	public int[] index;
 
 	/** The current index position. */
 	public int indexPos;
@@ -76,11 +76,11 @@ public class GeometryBuffer {
 	 * @param points the points
 	 * @param index the index
 	 */
-	public GeometryBuffer(float[] points, short[] index) {
+	public GeometryBuffer(float[] points, int[] index) {
 		if (points == null)
 			points = new float[GROW_POINTS];
 		if (index == null)
-			index = new short[GROW_INDICES];
+			index = new int[GROW_INDICES];
 
 		this.points = points;
 		this.index = index;
@@ -129,7 +129,7 @@ public class GeometryBuffer {
 	 * @param numIndices the num indices
 	 */
 	public GeometryBuffer(int numPoints, int numIndices) {
-		this(new float[numPoints * 2], new short[numIndices]);
+		this(new float[numPoints * 2], new int[numIndices]);
 	}
 
 	/**
@@ -304,11 +304,11 @@ public class GeometryBuffer {
 	 * @param copy the copy
 	 * @return the short[] array holding current index
 	 */
-	public short[] ensureIndexSize(int size, boolean copy) {
+	public int[] ensureIndexSize(int size, boolean copy) {
 		if (size < index.length)
 			return index;
 
-		short[] newIndex = new short[size + GROW_INDICES];
+		int[] newIndex = new int[size + GROW_INDICES];
 		if (copy)
 			System.arraycopy(index, 0, newIndex, 0, index.length);
 
diff --git a/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLoader.java b/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLoader.java
index d6ed40b2..b05db8f6 100644
--- a/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLoader.java
+++ b/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLoader.java
@@ -40,7 +40,7 @@ class S3DBTileLoader extends TileLoader {
 		        4096, 0, 0,
 		        0, 4096, 0,
 		        4096, 4096, 0 };
-		g.index = new short[] { 0, 1, 2, 2, 1, 3 };
+		g.index = new int[] { 0, 1, 2, 2, 1, 3 };
 		mTilePlane.tags.add(new Tag("c", "transparent"));
 	}
 
diff --git a/vtm/src/org/oscim/renderer/elements/ExtrusionLayer.java b/vtm/src/org/oscim/renderer/elements/ExtrusionLayer.java
index 82ead73a..cd356392 100644
--- a/vtm/src/org/oscim/renderer/elements/ExtrusionLayer.java
+++ b/vtm/src/org/oscim/renderer/elements/ExtrusionLayer.java
@@ -153,7 +153,7 @@ public class ExtrusionLayer extends RenderElement {
 		if (element.type != GeometryType.TRIS)
 			return;
 
-		short[] index = element.index;
+		int[] index = element.index;
 		float[] points = element.points;
 
 		int vertexCnt = sumVertices;
@@ -338,7 +338,7 @@ public class ExtrusionLayer extends RenderElement {
 
 	public void add(MapElement element, float height, float minHeight) {
 
-		short[] index = element.index;
+		int[] index = element.index;
 		float[] points = element.points;
 
 		/* 10 cm steps */
@@ -415,7 +415,7 @@ public class ExtrusionLayer extends RenderElement {
 
 	/** roof indices for concave shapes */
 	private void addRoof(int startVertex, GeometryBuffer geom, int ipos, int ppos) {
-		short[] index = geom.index;
+		int[] index = geom.index;
 		float[] points = geom.points;
 
 		int len = 0;
diff --git a/vtm/src/org/oscim/renderer/elements/LineLayer.java b/vtm/src/org/oscim/renderer/elements/LineLayer.java
index f17957a7..5d29f92a 100644
--- a/vtm/src/org/oscim/renderer/elements/LineLayer.java
+++ b/vtm/src/org/oscim/renderer/elements/LineLayer.java
@@ -43,7 +43,7 @@ public final class LineLayer extends RenderElement {
 	/** scale factor mapping extrusion vector to short values */
 	public static final float DIR_SCALE = 2048;
 
-	/** maximal resoultion */
+	/** maximal resolution */
 	private static final float MIN_DIST = 1 / 8f;
 
 	/**
@@ -110,7 +110,7 @@ public final class LineLayer extends RenderElement {
 			addLine(points, null, numPoints, closed);
 	}
 
-	private void addLine(float[] points, short[] index, int numPoints, boolean closed) {
+	private void addLine(float[] points, int[] index, int numPoints, boolean closed) {
 
 		boolean rounded = false;
 		boolean squared = false;
diff --git a/vtm/src/org/oscim/renderer/elements/LineTexLayer.java b/vtm/src/org/oscim/renderer/elements/LineTexLayer.java
index db730c56..86d8ecfb 100644
--- a/vtm/src/org/oscim/renderer/elements/LineTexLayer.java
+++ b/vtm/src/org/oscim/renderer/elements/LineTexLayer.java
@@ -105,7 +105,7 @@ public final class LineTexLayer extends RenderElement {
 		addLine(geom.points, geom.index);
 	}
 
-	public void addLine(float[] points, short[] index) {
+	public void addLine(float[] points, int[] index) {
 
 		if (vertexItems.empty()) {
 			/* HACK add one vertex offset when compiling
diff --git a/vtm/src/org/oscim/renderer/elements/PolygonLayer.java b/vtm/src/org/oscim/renderer/elements/PolygonLayer.java
index 34e9f570..29f42e98 100644
--- a/vtm/src/org/oscim/renderer/elements/PolygonLayer.java
+++ b/vtm/src/org/oscim/renderer/elements/PolygonLayer.java
@@ -78,7 +78,7 @@ public final class PolygonLayer extends IndexedRenderElement {
 	float ymax = Short.MIN_VALUE;
 	float[] bbox = new float[8];
 
-	public void addPolygon(float[] points, short[] index) {
+	public void addPolygon(float[] points, int[] index) {
 		short center = (short) ((Tile.SIZE >> 1) * S);
 
 		short id = (short) numVertices;
diff --git a/vtm/src/org/oscim/tiling/source/PbfDecoder.java b/vtm/src/org/oscim/tiling/source/PbfDecoder.java
index d07ea089..c7668a65 100644
--- a/vtm/src/org/oscim/tiling/source/PbfDecoder.java
+++ b/vtm/src/org/oscim/tiling/source/PbfDecoder.java
@@ -319,7 +319,7 @@ public abstract class PbfDecoder implements ITileDecoder {
 		return ((val >>> 1) ^ -(val & 1));
 	}
 
-	public void decodeVarintArray(int num, short[] array) throws IOException {
+	public void decodeVarintArray(int num, int[] array) throws IOException {
 		int bytes = decodeVarint32();
 		fillBuffer(bytes);
 
@@ -353,7 +353,7 @@ public abstract class PbfDecoder implements ITileDecoder {
 				}
 			}
 
-			array[cnt] = (short) val;
+			array[cnt] = val;
 		}
 
 		if (pos != bufferPos + bytes)
diff --git a/vtm/src/org/oscim/tiling/source/mapfile/MapDatabase.java b/vtm/src/org/oscim/tiling/source/mapfile/MapDatabase.java
index 9fd4f48f..07d9e292 100644
--- a/vtm/src/org/oscim/tiling/source/mapfile/MapDatabase.java
+++ b/vtm/src/org/oscim/tiling/source/mapfile/MapDatabase.java
@@ -554,7 +554,7 @@ public class MapDatabase implements ITileDataSource {
 		}
 
 		//short[] wayLengths = new short[numBlocks];
-		short[] wayLengths = mElem.ensureIndexSize(numBlocks, false);
+		int[] wayLengths = mElem.ensureIndexSize(numBlocks, false);
 		if (wayLengths.length > numBlocks)
 			wayLengths[numBlocks] = -1;
 
@@ -962,7 +962,7 @@ public class MapDatabase implements ITileDataSource {
 	private boolean projectToTile(GeometryBuffer geom) {
 
 		float[] coords = geom.points;
-		short[] indices = geom.index;
+		int[] indices = geom.index;
 
 		long x = mTile.tileX * Tile.SIZE;
 		long y = mTile.tileY * Tile.SIZE + Tile.SIZE;
diff --git a/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java b/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java
index da9631b0..749d6656 100644
--- a/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java
+++ b/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java
@@ -59,7 +59,7 @@ public class TileDecoder extends PbfDecoder {
 	private static final int TAG_ELEM_COORDS = 13;
 	private static final int TAG_ELEM_LAYER = 21;
 
-	private short[] mSArray = new short[100];
+	private int[] mSArray = new int[100];
 
 	private Tile mTile;
 
@@ -153,7 +153,7 @@ public class TileDecoder extends PbfDecoder {
 				case TAG_TILE_TAGS:
 					int len = numTags * 2;
 					if (mSArray.length < len)
-						mSArray = new short[len];
+						mSArray = new int[len];
 
 					decodeVarintArray(len, mSArray);
 					if (!decodeTileTags(numTags, mSArray, keys, values)) {
@@ -181,7 +181,7 @@ public class TileDecoder extends PbfDecoder {
 		return true;
 	}
 
-	private boolean decodeTileTags(int numTags, short[] tagIdx,
+	private boolean decodeTileTags(int numTags, int[] tagIdx,
 	        String[] keys, String[] vals) {
 
 		Tag tag;
@@ -234,7 +234,7 @@ public class TileDecoder extends PbfDecoder {
 		mElem.ensureIndexSize(indexCnt, false);
 		decodeVarintArray(indexCnt, mElem.index);
 
-		short[] index = mElem.index;
+		int[] index = mElem.index;
 		int coordCnt = 0;
 
 		if (shift) {
@@ -373,8 +373,8 @@ public class TileDecoder extends PbfDecoder {
 
 	private boolean decodeElementTags(int numTags) throws IOException {
 		if (mSArray.length < numTags)
-			mSArray = new short[numTags];
-		short[] tagIds = mSArray;
+			mSArray = new int[numTags];
+		int[] tagIds = mSArray;
 
 		decodeVarintArray(numTags, tagIds);
 
diff --git a/vtm/src/org/oscim/utils/Tessellator.java b/vtm/src/org/oscim/utils/Tessellator.java
index 05fec5d2..2b23de15 100644
--- a/vtm/src/org/oscim/utils/Tessellator.java
+++ b/vtm/src/org/oscim/utils/Tessellator.java
@@ -33,7 +33,7 @@ public class Tessellator {
 	 * Special version for ExtrusionLayer to match indices with vertex
 	 * positions.
 	 */
-	public static int tessellate(float[] points, int ppos, int plen, short[] index,
+	public static int tessellate(float[] points, int ppos, int plen, int[] index,
 	        int ipos, int rings, int vertexOffset, VertexData outTris) {
 
 		int[] result = new int[2];
@@ -156,6 +156,7 @@ public class Tessellator {
 		return 1;
 	}
 
+	/* FIXME This modifies geom ?! */
 	public static int tessellate(GeometryBuffer geom, float scale,
 	        VertexData outPoints, VertexData outTris, int vertexOffset) {
 
@@ -180,6 +181,7 @@ public class Tessellator {
 				numPoints += geom.index[idx];
 			}
 
+			/* FIXME !!! */
 			for (int i = pointPos; i < pointPos + numPoints; i += 2) {
 				geom.points[i + 0] = (int) (geom.points[i + 0] * s);
 				geom.points[i + 1] = (int) (geom.points[i + 1] * s);
@@ -257,7 +259,7 @@ public class Tessellator {
 	 * @return context - must be freed with tessFinish()
 	 */
 	protected static native long tessellate(float[] points, int pos,
-	        short[] index, int ipos, int numRings, int[] result);
+	        int[] index, int ipos, int numRings, int[] result);
 
 	protected static native void tessFinish(long ctx);
 
@@ -268,7 +270,7 @@ public class Tessellator {
 
 	protected static native int tessGetVerticesFloat(long ctx, float[] coordinates);
 
-	protected static native int tessGetIndices(long ctx, short[] indices);
+	protected static native int tessGetIndices(long ctx, int[] indices);
 
 	protected static native int tessGetIndicesWO(long ctx, short[] indices, int offset);
 }
diff --git a/vtm/src/org/oscim/utils/geom/SimplifyDP.java b/vtm/src/org/oscim/utils/geom/SimplifyDP.java
index d3f18e0c..70a6df9e 100644
--- a/vtm/src/org/oscim/utils/geom/SimplifyDP.java
+++ b/vtm/src/org/oscim/utils/geom/SimplifyDP.java
@@ -36,7 +36,7 @@ public class SimplifyDP {
 	int[] stack = new int[32];
 
 	public void simplify(GeometryBuffer geom, float sqTolerance) {
-		short[] idx = geom.index;
+		int[] idx = geom.index;
 
 		int inPos = 0;
 		int outPos = 0;
diff --git a/vtm/src/org/oscim/utils/geom/TileClipper.java b/vtm/src/org/oscim/utils/geom/TileClipper.java
index b901ce40..0a862fbd 100644
--- a/vtm/src/org/oscim/utils/geom/TileClipper.java
+++ b/vtm/src/org/oscim/utils/geom/TileClipper.java
@@ -79,7 +79,7 @@ public class TileClipper {
 
 			int numLines = mLineClipper.clipLine(geom, out);
 
-			short idx[] = geom.ensureIndexSize(numLines + 1, false);
+			int idx[] = geom.ensureIndexSize(numLines + 1, false);
 			System.arraycopy(out.index, 0, idx, 0, numLines);
 			geom.index[numLines] = -1;