 			while (metadataTileIDs.length > 0)
 			{
 				query = _tileService.getMetadataTiles(metadataTileIDs.splice(0, metadataTilesPerQuery));
-				query.addAsyncResponder(handleMetadataStreamDownload, handleDownloadFault, query);
-				
-				_streamDownloadCounter++;
+				query.addAsyncResponder(handleMetadataStreamDownload, handleMetadataDownloadFault, query);
+				
+				_metadataStreamDownloadCounter++;
 			}
 			// make requests for groups of tiles
 			while (geometryTileIDs.length > 0)
 			{
 				query = _tileService.getGeometryTiles(geometryTileIDs.splice(0, geometryTilesPerQuery));
-				query.addAsyncResponder(handleGeometryStreamDownload, handleDownloadFault, query);
-				_streamDownloadCounter++;
+				query.addAsyncResponder(handleGeometryStreamDownload, handleGeometryDownloadFault, query);
+				_geometryStreamDownloadCounter++;
 			} 
 		}
 		
-		private function handleDownloadFault(event:FaultEvent, token:Object = null):void
+		private function handleMetadataDownloadFault(event:FaultEvent, token:Object = null):void
 		{
 			reportError(event);
 			//trace("handleDownloadFault",token,ObjectUtil.toString(event));
-			_streamDownloadCounter--;
+			_metadataStreamDownloadCounter--;
+		}
+		private function handleGeometryDownloadFault(event:FaultEvent, token:Object = null):void
+		{
+			reportError(event);
+			//trace("handleDownloadFault",token,ObjectUtil.toString(event));
+			_geometryStreamDownloadCounter--;
 		}
 
 		private function handleGetTileDescriptorsFault(event:FaultEvent, token:Object = null):void

				projectionSrsCode = result.projection;
				
				// handle metadata tiles
				_geometryStreamDecoder.decodeMetadataTileList(result.metadataTileDescriptors);
				
				// handle geometry tiles
				_geometryStreamDecoder.decodeGeometryTileList(result.geometryTileDescriptors);
				
			}
			catch (error:Error)


		private function handleMetadataStreamDownload(event:ResultEvent, token:Object = null):void
		{
			_metadataStreamDownloadCounter--;
			
			if (event.result == null)
			{
