diff --git a/dd-java-agent-ittests/pom.xml b/dd-java-agent-ittests/pom.xml
index cfdd3bc03b6..80da6e78f4a 100644
--- a/dd-java-agent-ittests/pom.xml
+++ b/dd-java-agent-ittests/pom.xml
@@ -11,7 +11,6 @@
     dd-java-agent-ittests
     Datadog Java Agent integration tests
     https://github.com/datadog/dd-trace-java
-    pom
 
 
     
diff --git a/dd-java-agent-ittests/src/test/java/com/datadoghq/trace/agent/SayTracedHello.java b/dd-java-agent-ittests/src/test/java/com/datadoghq/trace/agent/SayTracedHello.java
index 0d3111f3dbc..b79b99f6b48 100644
--- a/dd-java-agent-ittests/src/test/java/com/datadoghq/trace/agent/SayTracedHello.java
+++ b/dd-java-agent-ittests/src/test/java/com/datadoghq/trace/agent/SayTracedHello.java
@@ -1,21 +1,28 @@
 package com.datadoghq.trace.agent;
 
+import com.datadoghq.trace.DDTags;
 import com.datadoghq.trace.Trace;
+import io.opentracing.tag.StringTag;
+import io.opentracing.util.GlobalTracer;
 
 public class SayTracedHello {
 
-	@Trace(operationName="SAY_HELLO",tagsKV={"service-name","test"})
+	@Trace(operationName="SAY_HELLO")
 	public static String sayHello(){
+		new StringTag(DDTags.SERVICE_NAME).set(GlobalTracer.get().activeSpan(), "test");
 		return "hello!";
 	}
 	
-	@Trace(operationName="SAY_HA",tagsKV={"service-name","test","span-type","DB"})
+	@Trace(operationName="SAY_HA")
 	public static String sayHA(){
+		new StringTag(DDTags.SERVICE_NAME).set(GlobalTracer.get().activeSpan(), "test");
+		new StringTag(DDTags.SPAN_TYPE).set(GlobalTracer.get().activeSpan(), "DB");
 		return "HA!!";
 	}
 	
-	@Trace(operationName="NEW_TRACE",tagsKV={"service-name","test2"})
+	@Trace(operationName="NEW_TRACE")
 	public static String sayHELLOsayHA(){
+		new StringTag(DDTags.SERVICE_NAME).set(GlobalTracer.get().activeSpan(), "test2");
 		return sayHello()+sayHA();
 	}
 	
diff --git a/dd-java-agent/README.md b/dd-java-agent/README.md
index fbe34c7d523..17c9ce4e571 100644
--- a/dd-java-agent/README.md
+++ b/dd-java-agent/README.md
@@ -152,10 +152,10 @@ public void myMethod() throws InterruptedException{
 
 By default, the operation name attached to the spawn span will be the name of the method and no meta tags will be attached.
 
-You can use the `operationName` and `tagsKV` attributes to customize your trace:
+You can use the `operationName` customize your trace:
 
 ```java
-@Trace(operationName="Before DB",tagsKV={"mytag","myvalue"})
+@Trace(operationName="Before DB")
 public void myMethod() throws InterruptedException{
 	....
 }
diff --git a/dd-java-agent/src/main/java/com/datadoghq/trace/agent/TraceAnnotationsManager.java b/dd-java-agent/src/main/java/com/datadoghq/trace/agent/TraceAnnotationsManager.java
index db78226df1d..a5631e383a7 100644
--- a/dd-java-agent/src/main/java/com/datadoghq/trace/agent/TraceAnnotationsManager.java
+++ b/dd-java-agent/src/main/java/com/datadoghq/trace/agent/TraceAnnotationsManager.java
@@ -172,7 +172,6 @@ public static void loadAnnotationsRules(String... scannedPackages) {
 				String ruleText = 
 						CURRENT_SPAN_EXISTS+
 						buildSpan(javassistMethod)+
-						buildWithTags(javassistMethod)+
 						START;
 				RuleScript script = createRuleScript("Start Active Span ",cc, javassistMethod,  Location.create(LocationType.ENTRY,""),ruleText);
 				generatedScripts.append(script).append("\n");
@@ -264,26 +263,4 @@ private static String buildSpan(CtMethod javassistMethod){
 		}
 		return BUILD_SPAN+javassistMethod.getName()+CLOSE_PARENTHESIS;
 	}
-
-	private static String buildWithTags(CtMethod javassistMethod){
-		try {
-			Trace trace = (Trace) javassistMethod.getAnnotation(Trace.class);
-			if(trace.tagsKV()!=null && trace.tagsKV().length>0){
-				if(trace.tagsKV().length%2==0){
-					StringBuilder sb = new StringBuilder();
-					for(int i = 0;i${dd-trace.version}
         
 
+        
+        
+            io.opentracing
+            opentracing-api
+            ${opentracing.version}
+        
+        
+            io.opentracing
+            opentracing-util
+            ${opentracing.version}
+        
+
         
         
             io.dropwizard
diff --git a/dd-trace-examples/dropwizard-mongo-client/src/main/java/com/example/helloworld/client/TracedClient.java b/dd-trace-examples/dropwizard-mongo-client/src/main/java/com/example/helloworld/client/TracedClient.java
index 15ae1dcc6cb..29337ddf165 100644
--- a/dd-trace-examples/dropwizard-mongo-client/src/main/java/com/example/helloworld/client/TracedClient.java
+++ b/dd-trace-examples/dropwizard-mongo-client/src/main/java/com/example/helloworld/client/TracedClient.java
@@ -3,6 +3,8 @@
 import java.io.IOException;
 
 import com.datadoghq.trace.Trace;
+import io.opentracing.tag.StringTag;
+import io.opentracing.util.GlobalTracer;
 import okhttp3.OkHttpClient;
 import okhttp3.Request;
 import okhttp3.Response;
@@ -21,8 +23,9 @@ public static void main(String[] args) throws Exception{
 		System.out.println("After execute");
 	}
 
-	@Trace(tagsKV={"service-name","TracedClient"})
+	@Trace
 	private static void executeCall() throws IOException {
+		new StringTag("service-name").set(GlobalTracer.get().activeSpan(), "TracedClient");
 		OkHttpClient client = new OkHttpClient().newBuilder().build();
 
 		Request request = new Request.Builder()
diff --git a/dd-trace-examples/dropwizard-mongo-client/src/main/java/com/example/helloworld/resources/SimpleCrudResource.java b/dd-trace-examples/dropwizard-mongo-client/src/main/java/com/example/helloworld/resources/SimpleCrudResource.java
index a8fcb57c0d5..1e0b564ccd3 100644
--- a/dd-trace-examples/dropwizard-mongo-client/src/main/java/com/example/helloworld/resources/SimpleCrudResource.java
+++ b/dd-trace-examples/dropwizard-mongo-client/src/main/java/com/example/helloworld/resources/SimpleCrudResource.java
@@ -6,6 +6,8 @@
 import com.mongodb.MongoClient;
 import com.mongodb.client.MongoCursor;
 import com.mongodb.client.MongoDatabase;
+import io.opentracing.tag.StringTag;
+import io.opentracing.util.GlobalTracer;
 import org.bson.Document;
 
 import javax.ws.rs.GET;
@@ -101,24 +103,24 @@ public List getBooks() throws InterruptedException {
 	}
 
 	/**
-	 * The beforeDB is traced using the annotation @trace
-	 * Tags, the operation name can be configured using tagsKV and operationName options
+	 * The beforeDB is traced using the annotation @trace with a custom operationName and a custom tag.
 	 *
 	 * @throws InterruptedException
 	 */
-	@Trace(operationName = "Before DB", tagsKV = {"mytag", "myvalue"})
+	@Trace(operationName = "Before DB")
 	public void beforeDB() throws InterruptedException {
+		new StringTag("mytag").set(GlobalTracer.get().activeSpan(), "myvalue");
 		Thread.sleep(333);
 	}
 
 	/**
-	 * The beforeDB is traced using the annotation @trace
-	 * Tags, the operation name can be configured using tagsKV and operationName options
+	 * The beforeDB is traced using the annotation @trace with a custom operationName and a custom tag.
 	 *
 	 * @throws InterruptedException
 	 */
-	@Trace(operationName = "After DB", tagsKV = {"mytag", "myvalue"})
+	@Trace(operationName = "After DB")
 	public void afterDB() throws InterruptedException {
+		new StringTag("mytag").set(GlobalTracer.get().activeSpan(), "myvalue");
 		Thread.sleep(111);
 	}