diff --git a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Bundle.js b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Bundle.js
index 022bfb4..ee35784 100644
--- a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Bundle.js
+++ b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Bundle.js
@@ -270,9 +270,6 @@
 		
 		var parameterStatement = parameterNames.join(",");
 		var returnStatement = "\n\nreturn {" + exportNames.join(",") + "};";
-
-		var finalScript = this._script + returnStatement;
-		var load = new Function(parameterStatement, finalScript);
 		
 		var that = this;
 		var _ResourceWrapper = function() {
@@ -281,7 +278,11 @@
 			};
 		};
 		_ResourceWrapper.prototype = orion.global;
-		var context = new _ResourceWrapper();
+		var context = new _ResourceWrapper();		
+		var finalScript = this._script + returnStatement;
+		var load = new Function(parameterStatement, finalScript);
+		// or alternately
+		// var load = eval("(function("+parameterStatement+") {\n" + finalScript + "\n})");
 		this._scope = load.apply(context, parameterValues);
 	},
 	_unresolve : function() {
diff --git a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Framework.js b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Framework.js
index 71d8964..5b86a9f 100644
--- a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Framework.js
+++ b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Framework.js
@@ -287,16 +287,21 @@
 		return request.responseText;
 	}
 	
-	var url = new java.net.URL(location);
-	var buffer = new java.io.BufferedReader(new java.io.InputStreamReader(url.openStream()));
-	var line, responseText = "";
-	try {
-		while ((line = buffer.readLine()) != null)
-			responseText += line;
+	var url = new java.net.URL(location);	
+    var reader = new java.io.InputStreamReader(url.openStream());
+    var stringWriter = new java.io.StringWriter();
+    var buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024);    
+    var charsRead;
+	
+	try { 
+	    while ((charsRead = reader.read(buffer, 0, 1024)) != -1) {
+	    	stringWriter.write(buffer, 0, charsRead);
+	    }
 	} finally {
-		buffer.close();
+		reader.close;
+		stringWriter.close();
 	}
-	return responseText;		
+	return stringWriter.toString();		
 };
 
 
diff --git a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/__global.js b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/__global.js
index 486b9df..e25a6d2 100644
--- a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/__global.js
+++ b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/__global.js
@@ -1,2 +1,3 @@
 var orion = orion || {};
-orion.global = this;
+(function() {orion.global = this;})();
+
