 			
 		public function createSeriesNode(data:Object):IWeaveTreeNode
 		{
-			var node:IWeaveTreeNode = functionCache.get(createSeriesNode, data.id);
-			if (!node)
-			{
-				node = new ColumnTreeNode({
-					label: data.title,
-					data: data,
-					isBranch: true,
-					hasChildBranches: false,
-					children: function(node:ColumnTreeNode):Array {
-						var csv:CSVDataSource = getObservationsCSV(data.id);
-						var csvRoot:IWeaveTreeNode = csv.getHierarchyRoot();
-						node.dependency = csv;
-						return csvRoot.getChildren().map(function(csvNode:IColumnReference, ..._):IWeaveTreeNode {
-							var meta:Object = csvNode.getColumnMetadata();
-							meta[META_SERIES_ID] = data.id;
-							meta[META_COLUMN_NAME] = meta[CSVDataSource.METADATA_COLUMN_NAME];
-							return generateHierarchyNode(meta);
-						});
-					}
-				});
-				functionCache.set(createSeriesNode, data.id, node);
-			}
-			return node;
-		}
-		
+			return new ColumnTreeNode({
+				label: data.title,
+				data: data,
+				isBranch: true,
+				hasChildBranches: false,
+				children: function(node:ColumnTreeNode):Array {
+					var csv:CSVDataSource = getObservationsCSV(data.id);
+					var csvRoot:IWeaveTreeNode = csv.getHierarchyRoot();
+					node.dependency = csv;
+					return csvRoot.getChildren().map(function(csvNode:IColumnReference, ..._):IWeaveTreeNode {
+						var meta:Object = csvNode.getColumnMetadata();
+						meta[META_SERIES_ID] = data.id;
+						meta[META_COLUMN_NAME] = meta[CSVDataSource.METADATA_COLUMN_NAME];
+						return generateHierarchyNode(meta);
+					});
+				}
+			});
+		}
 		
         override public function getHierarchyRoot():IWeaveTreeNode
         {
-			
             if (!_rootNode)
-            {
-                var source:FREDDataSource = this;
                 _rootNode = createCategoryNode();
-            }
             return _rootNode;
         }
 		

							function(event:ResultEvent, csv:CSVDataSource):void
							{
								var result:Object = JsonCache.parseJSON(event.result.toString());
								var columnOrder:Array = ['date', 'realtime_start', 'realtime_end', 'value'];
								var rows:Array = WeaveAPI.CSVParser.convertRecordsToRows(result.observations, columnOrder);
								csv.csvData.setSessionState(rows);
								var valueTitle:String = lang("{0} ({1})", data.title, data.units);
								var metadataArray:Array = [
									{title: 'date', dataType: DataType.DATE, dateFormat: 'YYYY-MM-DD'},
									{title: 'realtime_start', dataType: DataType.DATE, dateFormat: 'YYYY-MM-DD'},
									{title: 'realtime_end', dataType: DataType.DATE, dateFormat: 'YYYY-MM-DD'},
									{title: valueTitle, dataType: DataType.NUMBER},
								];
								csv.metadata.setSessionState(metadataArray);
							},

			jsonCache.getJsonObject(getUrl(method, params), handler);
		}
		
		public function createCategoryNode(data:Object = null):ColumnTreeNode
		{
			if (!data)
