 		
 		private function typeofIsObject(value:Object):Boolean { return typeof value == 'object'; }
 		
-		/**
-		 * Session state of servletParams must be an object with two properties: 'method' and 'params'
-		 * If this is set, it assumes that url.value points to a Weave AMF3Servlet and the servlet method returns a table of data.
-		 */
-		public const servletParams:UntypedLinkableVariable = registerLinkableChild(this, new UntypedLinkableVariable(null, verifyServletParams));
-		public static const SERVLETPARAMS_PROPERTY_METHOD:String = 'method';
-		public static const SERVLETPARAMS_PROPERTY_PARAMS:String = 'params';
-		private var _servlet:AMF3Servlet = null;
-		private function verifyServletParams(value:Object):Boolean
-		{
-			return value != null
-				&& value.hasOwnProperty(SERVLETPARAMS_PROPERTY_METHOD)
-				&& value.hasOwnProperty(SERVLETPARAMS_PROPERTY_PARAMS);
-		}
-		
 		private const asyncParser:CSVParser = registerLinkableChild(this, new CSVParser(true), handleCSVParser);
 		/**
 		 * Called when csv parser finishes its task

		private var columnIds:Array = [];
		private var keysVector:Vector.<IQualifiedKey>;
		
		private function handleParsedRows(rows:Array):void
		{
			parsedRows = rows;
			columnIds = rows && rows[0] is Array ? (rows[0] as Array).concat() : [];

		/**
		 * Called when url session state changes
		 */		
		protected function handleURLChange():void
		{
			if (detectLinkableObjectChange(handleURLChange, url) && url.value)
			{
				// if url is specified, do not use csvDataString
				csvData.setSessionState(null);
				WeaveAPI.URLRequestUtils.getURL(this, new URLRequest(url.value), handleCSVDownload, handleCSVDownloadError, url.value, URLLoaderDataFormat.TEXT);
			}
		}
		
		/**
