diff --git a/symphony/assets/js/src/symphony.collapsible.js b/symphony/assets/js/src/symphony.collapsible.js
index <HASH>..<HASH> 100644
--- a/symphony/assets/js/src/symphony.collapsible.js
+++ b/symphony/assets/js/src/symphony.collapsible.js
@@ -4,6 +4,19 @@
 
 (function($, Symphony) {
 
+	// always put try/catches into their
+	// own function to prevent callers from
+	// going into un-optimized hell
+	var save = function (storage, collapsed) {
+		// Put in a try/catch incase something goes wrong (no space, privileges etc)
+		try {
+			window.localStorage[storage] = collapsed.get().join(',');
+		}
+		catch(e) {
+			window.onerror(e.message);
+		}
+	};
+
 	/**
 	 * Create collapsible elements.
 	 *
@@ -181,13 +194,8 @@
 						};
 					});
 
-					// Put in a try/catch incase something goes wrong (no space, privileges etc)
-					try {
-						window.localStorage[storage] = collapsed.get().join(',');
-					}
-					catch(e) {
-						window.onerror(e.message);
-					}
+					// save it to local storage
+					save(storage, collapsed);
 				}
 			});
Put try/catch in their own function

This prevents callers from being put into un-uptimized hell, where
any function that contains a try/catch will never be optimized
by js jit compilers (V8 in particular)