diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/HierarchyUtil.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/HierarchyUtil.js
index 870cf7a7070a5d9d4f77e01661010a9bf9a7088e..e84edc6c3988cc45e4381d17c88987db6f653946 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/HierarchyUtil.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/HierarchyUtil.js
@@ -59,8 +59,7 @@ var HierarchyUtil = new function() {
 			return max;
 		}
 		
-		var result = getMaxChildrenDepthWithQueueRecurion(sample, 0);
-		return result;
+		return getMaxChildrenDepthWithQueueRecurion(sample, 0);
 	}
 	
 	var getMaxParentsDepth = function(sample) {
@@ -83,10 +82,10 @@ var HierarchyUtil = new function() {
 			return max;
 		}
 		
-		var result = getMaxParentsDepthWithQueueRecurion(sample, 0);
-		return result;
+		return getMaxParentsDepthWithQueueRecurion(sample, 0);
 	}
 	
+	
 	var getSliderValue = function(id) {
 		var element = $('#' + id)
 		return  element.length > 0 ? element.data('slider').getValue() : 0;
@@ -165,4 +164,46 @@ var HierarchyUtil = new function() {
 			updater.filterSampleAndUpdate();
 		});
 	}
+	
+	
+	this.createRelationShipsMap = function(sample) {
+		var relationShipsMap = {};
+		traverseParents(sample, relationShipsMap);
+		traverseChildren(sample, relationShipsMap	);
+		return relationShipsMap;
+	}
+	var traverseParents = function(sample, relationShipsMap) {
+		if (sample.parents) {
+			for (var i = 0; i < sample.parents.length; i++) {
+				var parent = sample.parents[i];
+				addRelationShip(parent, sample, relationShipsMap);
+				traverseParents(parent, relationShipsMap);
+			}
+		}
+	}
+	
+	var traverseChildren = function(sample, relationShipsMap) {
+		if (sample.children) {
+			for (var i = 0; i < sample.children.length; i++) {
+				var child = sample.children[i];
+				addRelationShip(sample, child, relationShipsMap);
+				traverseChildren(child, relationShipsMap);
+			}
+		}
+	}
+	
+	var addRelationShip = function(parent, child, relationShipsMap) {
+		getRelationShips(child, relationShipsMap).parents.push(parent);
+		getRelationShips(parent, relationShipsMap).children.push(child);
+	}
+	
+	var getRelationShips = function(sample, relationShipsMap) {
+		var relationShips = relationShipsMap[sample.identifier];
+		if (typeof relationShips === 'undefined') {
+			relationShips = {parents: [], children: []};
+			relationShipsMap[sample.identifier] = relationShips;
+		}
+		return relationShips;
+	}
+	
 }
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleHierarchyTable/SampleHierarchyTableModel.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleHierarchyTable/SampleHierarchyTableModel.js
index 20411e8ec4b8e2a9b3bfae50a40e7581839967e2..d0dcab0b2048ca83bdc8c6080d4b372d0edd8aaf 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleHierarchyTable/SampleHierarchyTableModel.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleHierarchyTable/SampleHierarchyTableModel.js
@@ -15,8 +15,8 @@
  */
 
 function SampleHierarchyTableModel(sample) {
-	this.title = "Sample Hierarchy Table for " + sample.identifier;
 	this.sample = sample;
+	this.relationShipsMap = HierarchyUtil.createRelationShipsMap(sample);
 	
 	this.getData = function(dataList) {
 		var dataList = [];
@@ -62,6 +62,7 @@ function SampleHierarchyTableModel(sample) {
 	
 	this._addRow = function(dataList, sample, level, path) {
 		var annotations = FormUtil.getAnnotationsFromSample(sample);
+		var relationShips = this.relationShipsMap[sample.identifier];
 		dataList.push({
 			level : level,
 			sampleType : sample.sampleTypeCode,
@@ -69,17 +70,17 @@ function SampleHierarchyTableModel(sample) {
 			permId : sample.permId,
 			path: path,
 			name : sample.properties["NAME"],
-			parentAnnotations : this._createAnnotations(annotations, sample.parents),
-			childrenAnnotations : this._createAnnotations(annotations, sample.children),
+			parentAnnotations : this._createAnnotations(annotations, relationShips.parents),
+			childrenAnnotations : this._createAnnotations(annotations, relationShips.children),
 			sample : sample
 		});
 		
 	}
 	
-	this._createAnnotations = function(annotations, relatedSamples) {
+	this._createAnnotations = function(annotations, allSamples) {
 		var content = "";
 		var rowStarted = false;
-		AnnotationUtil.buildAnnotations(annotations, relatedSamples, {
+		AnnotationUtil.buildAnnotations(annotations, allSamples, {
 			startRow : function() {
 				if (content !== "") {
 					content += "\n";
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleHierarchyTable/SampleHierarchyTableView.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleHierarchyTable/SampleHierarchyTableView.js
index 3fb9933500cea1b4964d1de4440d958832b82f9a..146ab8b7905d3445907da97cb50b155d8290c132 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleHierarchyTable/SampleHierarchyTableView.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleHierarchyTable/SampleHierarchyTableView.js
@@ -31,7 +31,7 @@ function SampleHierarchyTableView(controller, model) {
 		});
 		$container.append($containerColumn);
 		
-		$containerColumn.append($("<h1>").append(this._model.title));
+		$containerColumn.append($("<h1>").append("Sample Hierarchy Table for " + this._model.sample.identifier));
 		HierarchyUtil.addHierarchyFilterWidget($containerColumn, this._model.sample, {
 			filterSampleAndUpdate : function() {
 				_this._dataGrid.refresh();
@@ -65,14 +65,14 @@ function SampleHierarchyTableView(controller, model) {
 			property : 'parentAnnotations',
 			sortable : true,
 			render : function(data) {
-				return _this._annotationsRenderer(data.sample.parents, data.sample);
+				return _this._annotationsRenderer(_this._model.relationShipsMap[data.identifier].parents, data.sample);
 			}
 		} , {
 			label : 'Children/Annotations',
 			property : 'childrenAnnotations',
 			sortable : true,
 			render : function(data) {
-				return _this._annotationsRenderer(data.sample.children, data.sample);
+				return _this._annotationsRenderer(_this._model.relationShipsMap[data.identifier].children, data.sample);
 			}
 		}];