docs: private StringBuilder formatBaseUrl(String targetUrl, int width, int height, Bbox box) throws GeomajasException {
  		try {
  			StringBuilder url = new StringBuilder(targetUrl);
  			int pos = url.lastIndexOf("?");
  			if (pos > 0) {
  				url.append("&SERVICE=WMS");
  			} else {
  				url.append("?SERVICE=WMS");
  			}
  			String layers = getId();
  			if (layerInfo.getDataSourceName() != null) {
  				layers = layerInfo.getDataSourceName();
  			}
  			url.append("&layers=");
  			url.append(URLEncoder.encode(layers, "UTF8"));
  			url.append("&WIDTH=");
  			url.append(Integer.toString(width));
  			url.append("&HEIGHT=");
  			url.append(Integer.toString(height));
  			DecimalFormat decimalFormat = new DecimalFormat(); // create new as this is not thread safe
  			decimalFormat.setDecimalSeparatorAlwaysShown(false);
  			decimalFormat.setGroupingUsed(false);
  			decimalFormat.setMinimumFractionDigits(0);
  			decimalFormat.setMaximumFractionDigits(100);
  			DecimalFormatSymbols symbols = new DecimalFormatSymbols();
  			symbols.setDecimalSeparator('.');
  			decimalFormat.setDecimalFormatSymbols(symbols);
  
  			url.append("&bbox=");
  			url.append(decimalFormat.format(box.getX()));
  			url.append(",");
  			url.append(decimalFormat.format(box.getY()));
  			url.append(",");
  			url.append(decimalFormat.format(box.getMaxX()));
  			url.append(",");
  			url.append(decimalFormat.format(box.getMaxY()));
  			url.append("&format=");
  			url.append(format);
  			url.append("&version=");
  			url.append(version);
  			if ("1.3.0".equals(version)) {
  				url.append("&crs=");
  			} else {
  				url.append("&srs=");
  			}
  			url.append(URLEncoder.encode(layerInfo.getCrs(), "UTF8"));
  			url.append("&styles=");
  			url.append(styles);
  			if (null != parameters) {
  				for (Parameter p : parameters) {
  					url.append("&");
  					url.append(URLEncoder.encode(p.getName(), "UTF8"));
  					url.append("=");
  					url.append(URLEncoder.encode(p.getValue(), "UTF8"));
  				}
  			}
  			if (useProxy && null != securityContext.getToken()) {
  				url.append("&userToken=");
  				url.append(securityContext.getToken());
  			}
  			return url;
  		} catch (UnsupportedEncodingException uee) {
  			throw new IllegalStateException("Cannot find UTF8 encoding?", uee);
  		}
  	}