 							entry.$layout_el = entry.$box_el
 						else
 							entry.$layout_el = entry.$indicator_el
+						entry.height = entry.$layout_el.height() # Do all of our DOM reads first for perfomance, see http://wilsonpage.co.uk/preventing-layout-thrashing/
 						entries.push entry
 					entries.sort (a,b) -> a.scope.entry.offset - b.scope.entry.offset
 					

					entries_before.reverse() # Work through backwards, starting with the one just above
					for entry, i in entries_before
						original_top = entry.scope.entry.screenPos.y
						height = entry.$layout_el.height()
						original_bottom = original_top + height
						bottom = Math.min(original_bottom, previousTop - PADDING)
						top = bottom - height

					previousBottom = focused_entry_top + focused_entry.$layout_el.height()
					for entry in entries_after
						original_top = entry.scope.entry.screenPos.y
						height = entry.height
						top = Math.max(original_top, previousBottom + PADDING)
						previousBottom = top + height
						entry.$box_el.css(top: top)
