diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/fakedata.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/fakedata.py
index b7aa095810db0cca6408d4f424ec5cac53da4580..bf257ceeac23b65a306257c1a50febce4bbd4574 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/fakedata.py
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/fakedata.py
@@ -23,13 +23,13 @@ from datetime import datetime
 from datetime import timedelta
 
 numProjects = 5
-numObsPerProject = 2
-numPipelinesPerObs = 3
+numObsPerProject = 3
+numPipelinesPerObs = 5
 numCoreStations = 20
-numRemoteStations = 15
+numRemoteStations = 25
 numCobaltNodes = 8
 numComputeNodes = 50
-numIngestNodes = 4
+numIngestNodes = 2
 
 _taskIdCntr = 0
 
diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js
index 63247e47743da243e6acbe75edd77a9f31260154..6201fef33428b321accd06b4c09e4a83d50dc714 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js
@@ -19,6 +19,9 @@ angular.module('raeApp').factory("dataService", function(){
 
     self.resourcesWithClaims = [];
 
+    self.filteredTasks = [];
+    self.filteredTaskDict = {};
+
     return self;
 });
 
@@ -66,6 +69,9 @@ dataControllerMod.controller('DataController',
         $http.get('/rest/tasks').success(function(result) {
             self.dataService.tasks = result.tasks;
             self.dataService.taskDict = toIdBasedDict(self.dataService.tasks);
+
+            self.dataService.filteredTasks = self.dataService.tasks;
+            self.dataService.filteredTaskDict = self.dataService.taskDict;
         });
     };
 
diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/ganttcontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/ganttcontroller.js
index 3e8f84409b1bca8bc89b04d1f29a2a711448d128..148cae104676ca82e24c151f18982315745ab2df 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/ganttcontroller.js
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/ganttcontroller.js
@@ -18,6 +18,9 @@ var ganttControllerMod = angular.module('GanttControllerMod', [
 
 ganttControllerMod.controller('GanttController', ['$scope', 'dataService', function($scope, dataService) {
 
+    var self = this;
+    self.doInitialCollapse = true;
+
     $scope.dataService = dataService;
     $scope.ganttData = []
 
@@ -61,7 +64,7 @@ ganttControllerMod.controller('GanttController', ['$scope', 'dataService', funct
         var numResources = resources.length;
 
         var resourceGroupsDict = $scope.dataService.resourceGroupsDict;
-        var taskDict = $scope.dataService.taskDict;
+        var taskDict = $scope.dataService.filteredTaskDict;
 
         var resourceGroupClaims = $scope.dataService.resourceGroupClaims;
         var numResourceGroupClaims = resourceGroupClaims.length;
@@ -122,16 +125,19 @@ ganttControllerMod.controller('GanttController', ['$scope', 'dataService', funct
             var groupClaim = resourceGroupClaims[i];
             var task = taskDict[groupClaim.taskId];
 
-            var groupClaimTask = {
-                name: task ? task.name : '<unknown>',
-                'from': groupClaim.startTime,
-                'to': groupClaim.endTime
-            };
+            if(task)
+            {
+                var groupClaimTask = {
+                    name: task ? task.name : '<unknown>',
+                    'from': groupClaim.startTime,
+                    'to': groupClaim.endTime
+                };
 
-            var groupRowId = 'group_' + groupClaim.resourceGroupId;
-            var ganntGroupRow = ganntRowsDict[groupRowId];
-            if(ganntGroupRow)
-                ganntGroupRow.tasks.push(groupClaimTask);
+                var groupRowId = 'group_' + groupClaim.resourceGroupId;
+                var ganntGroupRow = ganntRowsDict[groupRowId];
+                if(ganntGroupRow)
+                    ganntGroupRow.tasks.push(groupClaimTask);
+            }
         }
 
         //and assign each resourceclaim to its resource in each group
@@ -139,29 +145,42 @@ ganttControllerMod.controller('GanttController', ['$scope', 'dataService', funct
             var claim = resourceClaims[i];
             var task = taskDict[claim.taskId];
 
-            var groupIds = resourceIdToGroupIdsDict[claim.resourceId];
-            var numGroups = groupIds.length;
-
-            var claimTask = {
-                name: task ? task.name : '<unknown>',
-                'from': claim.startTime,
-                'to': claim.endTime
-            };
-
-            if(numGroups > 0) {
-                for(var j = 0; j < numGroups; j++) {
-                    var resourceRowId = 'group_' + groupIds[j] + '_resource_' + claim.resourceId;
+            if(task)
+            {
+                var groupIds = resourceIdToGroupIdsDict[claim.resourceId];
+                var numGroups = groupIds.length;
+
+                if(numGroups > 0) {
+                    for(var j = 0; j < numGroups; j++) {
+                        var resourceRowId = 'group_' + groupIds[j] + '_resource_' + claim.resourceId;
+                        var ganntRow = ganntRowsDict[resourceRowId];
+                        if(ganntRow)
+                        {
+                            var claimTask = {
+                                name: task ? task.name : '<unknown>',
+                                'from': claim.startTime,
+                                'to': claim.endTime
+                            };
+
+                            ganntRow.tasks.push(claimTask);
+                        }
+                    }
+                }
+                else {
+                    var resourceRowId = 'resource_' + claim.resourceId;
                     var ganntRow = ganntRowsDict[resourceRowId];
                     if(ganntRow)
+                    {
+                        var claimTask = {
+                            name: task ? task.name : '<unknown>',
+                            'from': claim.startTime,
+                            'to': claim.endTime
+                        };
+
                         ganntRow.tasks.push(claimTask);
+                    }
                 }
             }
-            else {
-                var resourceRowId = 'resource_' + claim.resourceId;
-                var ganntRow = ganntRowsDict[resourceRowId];
-                if(ganntRow)
-                    ganntRow.tasks.push(claimTask);
-            }
         }
 
         var ganntRows = [];
@@ -170,7 +189,12 @@ ganttControllerMod.controller('GanttController', ['$scope', 'dataService', funct
             ganntRows.push(ganntRowsDict[groupId]);
 
         $scope.ganttData = ganntRows;
-        setTimeout($scope.api.tree.collapseAll(), 10)
+
+        if(self.doInitialCollapse)
+        {
+            doInitialCollapse = false;
+            setTimeout($scope.api.tree.collapseAll, 500)
+        }
     };
 
     $scope.$watch('dataService.tasks', updateGanttData);
@@ -178,5 +202,6 @@ ganttControllerMod.controller('GanttController', ['$scope', 'dataService', funct
     $scope.$watch('dataService.resourceclaims', updateGanttData);
     $scope.$watch('dataService.resourceGroups', updateGanttData);
     $scope.$watch('dataService.resourceGroupClaims', updateGanttData);
+    $scope.$watch('dataService.filteredTaskDict', updateGanttData);
 }
 ]);
diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
index 529d0f44951c450bfd86ca832e09c6e4ddb62a64..8bba12fc8e36ed92d4a87d25414bb05a3b685ec8 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
@@ -33,7 +33,32 @@ gridControllerMod.controller('GridController', ['$scope', 'dataService', 'uiGrid
         enableSorting: true,
         enableFiltering: true,
         columnDefs: $scope.columns,
-        data: []
+        data: [],
+        onRegisterApi: function(gridApi){
+            $scope.gridApi = gridApi;
+
+            $scope.gridApi.core.on.rowsRendered($scope, filterTasks);
+        }
+    };
+
+    function filterTasks() {
+        var taskDict = $scope.dataService.taskDict;
+        var filteredTasks = [];
+        var filteredTaskDict = {};
+        var rows = $scope.gridApi.grid.rows;
+        var numRows = rows.length;
+        for(var i = 0; i < numRows; i++) {
+            var row = rows[i];
+            if(row.visible)
+            {
+                var task = taskDict[row.entity.id];
+                filteredTasks.push(task);
+                filteredTaskDict[task.id] = task;
+            }
+        }
+
+        $scope.dataService.filteredTasks = filteredTasks;
+        $scope.dataService.filteredTaskDict = filteredTaskDict;
     };
 
     function fillColumFilterSelectOptions(options, columnDef) {
@@ -48,7 +73,6 @@ gridControllerMod.controller('GridController', ['$scope', 'dataService', 'uiGrid
         columnDef.filter.selectOptions = columnSelectOptions;
     };
 
-
     $scope.$watch('dataService.taskstatustypes', function() {
         fillColumFilterSelectOptions($scope.dataService.taskstatustypes, $scope.columns[3]);
     });
diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
index 7f4be997c823f5b5548a2c60275ed8138ac17749..746a135d0777c633c605b0e8e63347eadebeb80e 100755
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
@@ -119,7 +119,7 @@ def taskstatustypes():
 
 def main(argv=None, debug=False):
     '''Start the webserver'''
-    app.run(debug=debug, threaded=True, port=5001)
+    app.run(debug=debug, threaded=True, host='0.0.0.0', port=5001)
 
 if __name__ == '__main__':
     main(sys.argv[1:], True)