diff --git a/org.jacoco.agent/.classpath b/org.jacoco.agent/.classpath
new file mode 100644
index 0000000..2d1a430
--- /dev/null
+++ b/org.jacoco.agent/.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.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.jacoco.agent/.project b/org.jacoco.agent/.project
new file mode 100644
index 0000000..e8aebbd
--- /dev/null
+++ b/org.jacoco.agent/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.jacoco.agent</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/org.jacoco.agent/.settings/org.eclipse.jdt.core.prefs b/org.jacoco.agent/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..6b1e66d
--- /dev/null
+++ b/org.jacoco.agent/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Mon May 18 09:43:33 CEST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/org.jacoco.agent/.settings/org.eclipse.jdt.ui.prefs b/org.jacoco.agent/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..de9ff9b
--- /dev/null
+++ b/org.jacoco.agent/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,56 @@
+#Mon May 18 07:50:42 CEST 2009
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_EclEmma
+formatter_settings_version=11
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/org.jacoco.agent/META-INF/MANIFEST.MF b/org.jacoco.agent/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8ec04a6
--- /dev/null
+++ b/org.jacoco.agent/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: JaCoCo Agent
+Bundle-SymbolicName: org.jacoco.agent
+Bundle-Version: 0.1.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Import-Package: org.jacoco.core.data,
+ org.jacoco.core.instr,
+ org.jacoco.core.runtime,
+ org.objectweb.asm;version="3.1.0"
diff --git a/org.jacoco.agent/about.html b/org.jacoco.agent/about.html
new file mode 100644
index 0000000..f5d8b33
--- /dev/null
+++ b/org.jacoco.agent/about.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>
+  JaCoCo is a free Java code coverage library implemented by Marc R. Hoffmann.
+  Check <a href="http://www.eclemma.org/devdoc/jacoco.html">http://www.eclemma.org/devdoc/jacoco.html</a>
+  for updates, documentation and support.
+</p>
+
+<h3>License</h3>
+
+<p>
+  The Content in this plug-in is made available by Mountainminds GmbH &amp; Co. KG,
+  Munich. Except indicated below, the Content is provided to you under the terms
+  and conditions of the Eclipse Public License Version 1.0 (&quot;EPL&quot;).
+  A copy of the EPL is available at
+  <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+</p>
+
+<h3>Third-party Licenses</h3>
+    
+<p>
+  This bundle is based on the <a href="http://asm.objectweb.org/">ASM</a>
+  library which is distributed under the following license.  
+</p>
+
+<pre>
+Copyright (c) 2000-2005 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.jacoco.agent/build.properties b/org.jacoco.agent/build.properties
new file mode 100644
index 0000000..a657887
--- /dev/null
+++ b/org.jacoco.agent/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               about.html
diff --git a/org.jacoco.agent/buildhook.xml b/org.jacoco.agent/buildhook.xml
new file mode 100644
index 0000000..6dce926
--- /dev/null
+++ b/org.jacoco.agent/buildhook.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="org.jacoco.agent.buildhook">
+
+	<path id="dependencies">
+		<path refid="bundle-org.jacoco.core"/>
+		<path refid="bundle-org.objectweb.asm"/>
+	</path>
+	
+	<property name="do.compile"       value="true"/>
+	<property name="do.custompackage" value="true"/>
+	<property name="do.doc"     value="true"/>
+	
+	<target name="custompackage">
+		<jar destfile="${result.dist.lib.dir}/jacocoagent.jar">
+			<manifest>
+				<attribute name="Premain-Class" value="org.jacoco.agent.JacocoAgent"/>
+				<attribute name="Implementation-Title" value="JaCoCo Java Agent"/>
+				<attribute name="Implementation-Vendor" value="Mountainminds GmbH &amp; Co. KG"/>
+				<attribute name="Implementation-Version" value="${qualified.bundle.version}"/>
+			</manifest>
+			<fileset dir="${result.tmp.bundle.classes.dir}"/>
+			<fileset dir="${toString:bundle-org.jacoco.core}"/>
+			<zipfileset includes="**/*.class">
+		        <fileset file="${toString:bundle-org.objectweb.asm}"/>
+		    </zipfileset>
+		</jar>
+	</target>
+	
+</project>
\ No newline at end of file
diff --git a/org.jacoco.agent/src/org/jacoco/agent/CoverageTransformer.java b/org.jacoco.agent/src/org/jacoco/agent/CoverageTransformer.java
new file mode 100644
index 0000000..e418f77
--- /dev/null
+++ b/org.jacoco.agent/src/org/jacoco/agent/CoverageTransformer.java
@@ -0,0 +1,40 @@
+package org.jacoco.agent;
+
+import java.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.IllegalClassFormatException;
+import java.security.ProtectionDomain;
+
+import org.jacoco.core.instr.Instrumenter;
+import org.jacoco.core.runtime.IRuntime;
+
+public class CoverageTransformer implements ClassFileTransformer {
+
+	private final Instrumenter instrumenter;
+
+	public CoverageTransformer(IRuntime runtime) {
+		this.instrumenter = new Instrumenter(runtime);
+	}
+
+	public byte[] transform(ClassLoader loader, String classname,
+			Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
+			byte[] classfileBuffer) throws IllegalClassFormatException {
+
+		if (loader == null) {
+			// don't instrument classes of the bootstrap loader
+			return null;
+		}
+
+		if (loader.getClass().getName().equals(
+				"sun.reflect.DelegatingClassLoader")) {
+			// don't instrument classes generated for reflection
+			return null;
+		}
+
+		try {
+			return instrumenter.instrument(classfileBuffer);
+		} catch (Throwable t) {
+			t.printStackTrace();
+			return null;
+		}
+	}
+}
diff --git a/org.jacoco.agent/src/org/jacoco/agent/JacocoAgent.java b/org.jacoco.agent/src/org/jacoco/agent/JacocoAgent.java
new file mode 100644
index 0000000..238fae6
--- /dev/null
+++ b/org.jacoco.agent/src/org/jacoco/agent/JacocoAgent.java
@@ -0,0 +1,26 @@
+package org.jacoco.agent;
+
+import java.lang.instrument.Instrumentation;
+
+import org.jacoco.core.data.ExecutionDataDumper;
+import org.jacoco.core.runtime.IRuntime;
+import org.jacoco.core.runtime.SystemPropertiesRuntime;
+
+public class JacocoAgent {
+
+	public static void premain(String agentArgs, final Instrumentation inst) {
+		final IRuntime runtime = new SystemPropertiesRuntime();
+		runtime.startup();
+
+		inst.addTransformer(new CoverageTransformer(runtime));
+
+		Runtime.getRuntime().addShutdownHook(new Thread() {
+
+			@Override
+			public void run() {
+				runtime.collect(new ExecutionDataDumper(System.out), false);
+			}
+
+		});
+	}
+}
diff --git a/org.jacoco.agent/src/overview.html b/org.jacoco.agent/src/overview.html
new file mode 100644
index 0000000..464759e
--- /dev/null
+++ b/org.jacoco.agent/src/overview.html
@@ -0,0 +1,9 @@
+<html>
+<body>
+
+<p>
+  The JaCoCo agent bundle provides a Java agent for runtime instrumentation.
+</p>
+
+</body>
+</html>
\ No newline at end of file
