.
diff --git a/examples/sample.js.debug/.classpath b/examples/sample.js.debug/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/examples/sample.js.debug/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/sample.js.debug/.project b/examples/sample.js.debug/.project
new file mode 100644
index 0000000..0a8aa6a
--- /dev/null
+++ b/examples/sample.js.debug/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>sample.debug</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/sample.js.debug/.settings/org.eclipse.jdt.core.prefs b/examples/sample.js.debug/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..9466dda
--- /dev/null
+++ b/examples/sample.js.debug/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Wed Aug 26 11:01:39 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/examples/sample.js.debug/.settings/org.eclipse.pde.core.prefs b/examples/sample.js.debug/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..7aca589
--- /dev/null
+++ b/examples/sample.js.debug/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,4 @@
+#Wed Aug 26 11:01:39 EDT 2009
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/examples/sample.js.debug/META-INF/MANIFEST.MF b/examples/sample.js.debug/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9180c12
--- /dev/null
+++ b/examples/sample.js.debug/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Debug Sample
+Bundle-SymbolicName: sample.js.debug
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: sample.js.debug.Activator
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Import-Package: org.eclipse.e4.internal.languages.javascript,
+ org.eclipse.e4.languages.javascript,
+ org.mozilla.javascript,
+ org.osgi.framework;version="1.3.0",
+ org.osgi.util.tracker;version="1.4.2"
diff --git a/examples/sample.js.debug/build.properties b/examples/sample.js.debug/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/examples/sample.js.debug/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/examples/sample.js.debug/scripts/bundle.json b/examples/sample.js.debug/scripts/bundle.json
new file mode 100644
index 0000000..cad88d2
--- /dev/null
+++ b/examples/sample.js.debug/scripts/bundle.json
@@ -0,0 +1,5 @@
+{
+"Bundle-SymbolicName":"sample.js.debug",
+"Bundle-Version":"1.0",
+"Bundle-ScriptPath":"script.js"
+}
\ No newline at end of file
diff --git a/examples/sample.js.debug/scripts/script.js b/examples/sample.js.debug/scripts/script.js
new file mode 100644
index 0000000..ba70fb8
--- /dev/null
+++ b/examples/sample.js.debug/scripts/script.js
@@ -0,0 +1,16 @@
+var test = function() {
+  var clazz = Packages.javascript.dummy.Activator;
+  return clazz.TEST;
+};
+var v = test();
+debugger;
+
+var y = test();
+
+var z = test();
+
+var test2 = function() {
+	debugger;
+	var clazz = Packages.javascript.dummy.Activator;
+	return clazz.TEST;
+};
\ No newline at end of file
diff --git a/examples/sample.js.debug/src/sample/js/debug/Activator.java b/examples/sample.js.debug/src/sample/js/debug/Activator.java
new file mode 100644
index 0000000..74fc73e
--- /dev/null
+++ b/examples/sample.js.debug/src/sample/js/debug/Activator.java
@@ -0,0 +1,93 @@
+package sample.js.debug;
+
+import java.net.URL;
+import org.eclipse.e4.internal.languages.javascript.JSFrameworkImpl;
+import org.eclipse.e4.languages.javascript.JSBundle;
+import org.eclipse.e4.languages.javascript.JSBundleException;
+import org.eclipse.e4.languages.javascript.JSFramework;
+import org.mozilla.javascript.Callable;
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.ContextAction;
+import org.mozilla.javascript.Scriptable;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+public class Activator implements BundleActivator, ServiceTrackerCustomizer {
+	
+	public static final String TEST = "test";
+	
+	private BundleContext context;
+	private ServiceTracker frameworkTracker;
+	private JSFramework framework;
+
+	private JSBundle jsBundle;
+
+	public void start(BundleContext bundleContext) throws Exception {
+		this.context = bundleContext;
+
+		frameworkTracker = new ServiceTracker(context, JSFramework.class.getName(), this);
+		frameworkTracker.open();
+		
+		
+	}
+
+	public void stop(BundleContext bundleContext) throws Exception {
+		frameworkTracker.close();
+		frameworkTracker = null;
+		context = null;
+	}
+
+	public Object addingService(ServiceReference reference) {
+		framework = (JSFramework) context.getService(reference);
+		
+		Bundle bundle = context.getBundle();
+		URL jsBundleEntry = bundle.getEntry("scripts/bundle.json");
+		if (jsBundleEntry == null)
+			return null;
+
+
+		try {
+			 jsBundle =((JSFrameworkImpl)framework).installBundle(jsBundleEntry.toString(), bundle);
+		} catch (JSBundleException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		framework.resolve();
+		try {
+			testDebugSanityInstallResolveBundle();
+		} catch (JSBundleException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		return framework;
+	}
+
+	public void modifiedService(ServiceReference reference, Object service) {
+	}
+
+	public void removedService(ServiceReference reference, Object service) {
+		jsBundle.uninstall();
+		framework.resolve();
+	}
+	
+	public void testDebugSanityInstallResolveBundle() throws JSBundleException {
+
+		final Scriptable scope = jsBundle.getScope();
+		Object obj = scope.get("test2", scope);
+		final Callable test = (Callable) obj;
+		
+		jsBundle.call(new ContextAction() {
+			public Object run(Context cx) {
+				Object result = test.call(cx, scope, scope, new Object[0]);
+				Object javaResult = Context.jsToJava(result, String.class);
+				return javaResult;
+			}
+		});
+	}
+
+}
diff --git a/examples/sample.js.fib/.classpath b/examples/sample.js.fib/.classpath
new file mode 100644
index 0000000..2fbb7a2
--- /dev/null
+++ b/examples/sample.js.fib/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/sample.js.fib/.project b/examples/sample.js.fib/.project
new file mode 100644
index 0000000..abaef24
--- /dev/null
+++ b/examples/sample.js.fib/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>sample.js.fib</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/sample.js.fib/.settings/org.eclipse.jdt.core.prefs b/examples/sample.js.fib/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..348ce17
--- /dev/null
+++ b/examples/sample.js.fib/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Tue Feb 17 09:34:02 EST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/examples/sample.js.fib/.settings/org.eclipse.pde.core.prefs b/examples/sample.js.fib/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..4b2a050
--- /dev/null
+++ b/examples/sample.js.fib/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,4 @@
+#Tue Feb 17 09:34:38 EST 2009
+eclipse.preferences.version=1
+pluginProject.extensions=true
+resolve.requirebundle=false
diff --git a/examples/sample.js.fib/META-INF/MANIFEST.MF b/examples/sample.js.fib/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..499b5cc
--- /dev/null
+++ b/examples/sample.js.fib/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Fibonacci
+Bundle-SymbolicName: sample.js.fib;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+JavaScript-Bundle: scripts/bundle.json
+
diff --git a/examples/sample.js.fib/build.properties b/examples/sample.js.fib/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/examples/sample.js.fib/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/examples/sample.js.fib/scripts/bundle.json b/examples/sample.js.fib/scripts/bundle.json
new file mode 100644
index 0000000..6e13652
--- /dev/null
+++ b/examples/sample.js.fib/scripts/bundle.json
@@ -0,0 +1,6 @@
+{
+"Bundle-SymbolicName":"sample.js.fib",
+"Bundle-Version":"1.0",
+"Bundle-ScriptPath":"fib.js",
+"Export-Package":"sample;version=1.0.0"
+}
\ No newline at end of file
diff --git a/examples/sample.js.fib/scripts/fib.js b/examples/sample.js.fib/scripts/fib.js
new file mode 100644
index 0000000..9adabe0
--- /dev/null
+++ b/examples/sample.js.fib/scripts/fib.js
@@ -0,0 +1,11 @@
+debugger;
+var sample = sample || {};
+sample.fib = function fib(n) {
+	if (n==0)
+		return 0;
+	
+	if (n==1)
+		return 1;
+	
+	return fib(n - 1) + fib(n - 2);
+};
diff --git a/examples/sample.js.servlet/.classpath b/examples/sample.js.servlet/.classpath
new file mode 100644
index 0000000..2fbb7a2
--- /dev/null
+++ b/examples/sample.js.servlet/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/sample.js.servlet/.project b/examples/sample.js.servlet/.project
new file mode 100644
index 0000000..bcb7875
--- /dev/null
+++ b/examples/sample.js.servlet/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>sample.js.servlet</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/sample.js.servlet/.settings/org.eclipse.jdt.core.prefs b/examples/sample.js.servlet/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..348ce17
--- /dev/null
+++ b/examples/sample.js.servlet/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Tue Feb 17 09:34:02 EST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/examples/sample.js.servlet/.settings/org.eclipse.pde.core.prefs b/examples/sample.js.servlet/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..4b2a050
--- /dev/null
+++ b/examples/sample.js.servlet/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,4 @@
+#Tue Feb 17 09:34:38 EST 2009
+eclipse.preferences.version=1
+pluginProject.extensions=true
+resolve.requirebundle=false
diff --git a/examples/sample.js.servlet/META-INF/MANIFEST.MF b/examples/sample.js.servlet/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..81fead2
--- /dev/null
+++ b/examples/sample.js.servlet/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Servlet
+Bundle-SymbolicName: sample.js.servlet;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Require-Bundle: org.eclipse.e4.languages.javascript.registry;bundle-version="0.9.0",
+ org.eclipse.equinox.http.registry;bundle-version="1.0.100"
+Import-Package: javax.servlet;version="2.5.0",
+ javax.servlet.http;version="2.5.0"
+JavaScript-Bundle: scripts/bundle.json
+
diff --git a/examples/sample.js.servlet/build.properties b/examples/sample.js.servlet/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/examples/sample.js.servlet/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/examples/sample.js.servlet/plugin.xml b/examples/sample.js.servlet/plugin.xml
new file mode 100644
index 0000000..322ccbf
--- /dev/null
+++ b/examples/sample.js.servlet/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.equinox.http.registry.servlets">
+      <servlet
+            alias="/jsFib"
+            class="org.eclipse.e4.languages.javascript.registry.JavaScriptFactory:FibonacciServlet">
+      </servlet>
+   </extension>
+</plugin>
diff --git a/examples/sample.js.servlet/scripts/bundle.json b/examples/sample.js.servlet/scripts/bundle.json
new file mode 100644
index 0000000..48d84bf
--- /dev/null
+++ b/examples/sample.js.servlet/scripts/bundle.json
@@ -0,0 +1,6 @@
+{
+"Bundle-SymbolicName":"sample.js.servlet.js",
+"Bundle-Version":"1.0",
+"Bundle-ScriptPath":"script.js",
+"Import-Package":"sample;version=1.0.0"
+}
\ No newline at end of file
diff --git a/examples/sample.js.servlet/scripts/script.js b/examples/sample.js.servlet/scripts/script.js
new file mode 100644
index 0000000..20582f1
--- /dev/null
+++ b/examples/sample.js.servlet/scripts/script.js
@@ -0,0 +1,21 @@
+
+function FibonacciServlet() {
+	var count = 0;
+	var o = {
+		
+		"service" : function(req, resp) {
+			this.super$service(req, resp); // this is very important
+		},
+		"doGet" : function(req, resp) {
+			resp.getWriter().write("<html><body>");
+			resp.getWriter().write("<p>" + req.getMethod() + "</p>");
+			resp.getWriter().write("<p>Hello JavaScript World - count: " + (++count) + "</p>");
+			resp.getWriter().write("<p> Fibonacci (" + count + "): " + sample.fib(count) + "</p>");
+			resp.getWriter().write("</html></body>");
+		},
+		"getServletInfo" : function() {
+			return "JavaScript Servlet";
+		}
+	};
+	return new JavaAdapter(Packages.javax.servlet.http.HttpServlet, o);
+}
\ No newline at end of file