diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
index 45b7ccd..c4bf874 100644
--- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
+++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
@@ -34,8 +34,6 @@
  */
 public class Agent implements IAgent {
 
-	private static Agent singleton;
-
 	/**
 	 * Returns a global instance which is already started. If the method is
 	 * called the first time the instance is created with the given options.
@@ -63,18 +61,15 @@
 	 * @return global instance
 	 */
 	public static synchronized Agent getInstance(final AgentOptions options, RuntimeData data) {
-		if (singleton == null) {
-			final Agent agent = new Agent(options, IExceptionLogger.SYSTEM_ERR, data);
-			agent.startup();
-			Runtime.getRuntime().addShutdownHook(new Thread() {
-				@Override
-				public void run() {
-					agent.shutdown();
-				}
-			});
-			singleton = agent;
-		}
-		return singleton;
+		final Agent agent = new Agent(options, IExceptionLogger.SYSTEM_ERR, data);
+		agent.startup();
+		Runtime.getRuntime().addShutdownHook(new Thread() {
+			@Override
+			public void run() {
+				agent.shutdown();
+			}
+		});
+		return agent;
 	}
 	// END android-change
 
@@ -93,9 +88,8 @@
 	public static synchronized Agent getInstance() throws IllegalStateException {
 		// BEGIN android-change
 		// throw new IllegalStateException("JaCoCo agent not started.");
-		singleton = Offline.createAgent();
+		return Offline.createAgent();
 		// END android-change
-		return singleton;
 	}
 
 	private final AgentOptions options;
