This closes #88
diff --git a/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedJBoss7ServerImpl.java b/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedJBoss7ServerImpl.java
index ed00f61..3c313b3 100644
--- a/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedJBoss7ServerImpl.java
+++ b/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedJBoss7ServerImpl.java
@@ -134,6 +134,7 @@
                 .poll(new FunctionPollConfig<Boolean,Boolean>(MANAGEMENT_URL_UP)
                         .callable(new Callable<Boolean>() {
                             private int counter = 0;
+                            @Override
                             public Boolean call() {
                                 sensors().set(REQUEST_COUNT, (counter++ % 100));
                                 sensors().set(ERROR_COUNT, (counter++ % 100));
diff --git a/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedMySqlNodeImpl.java b/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedMySqlNodeImpl.java
index 4560050..8f11c9d 100644
--- a/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedMySqlNodeImpl.java
+++ b/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedMySqlNodeImpl.java
@@ -65,6 +65,7 @@
                     .poll(new FunctionPollConfig<Boolean, Boolean>(SERVICE_UP)
                             .callable(new Callable<Boolean>() {
                                 private int counter = 0;
+                                @Override
                                 public Boolean call() {
                                     sensors().set(QUERIES_PER_SECOND_FROM_MYSQL, (double)(counter++ % 100));
                                     return true;
diff --git a/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedNginxControllerImpl.java b/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedNginxControllerImpl.java
index c75c8ab..3777528 100644
--- a/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedNginxControllerImpl.java
+++ b/qa/src/main/java/org/apache/brooklyn/qa/load/SimulatedNginxControllerImpl.java
@@ -99,6 +99,7 @@
                 .period(getConfig(HTTP_POLL_PERIOD))
                 .poll(new FunctionPollConfig<Boolean,Boolean>(SERVICE_UP)
                         .callable(new Callable<Boolean>() {
+                            @Override
                             public Boolean call() {
                                 return true;
                             }}))
diff --git a/qa/src/main/java/org/apache/brooklyn/qa/longevity/MonitorUtils.java b/qa/src/main/java/org/apache/brooklyn/qa/longevity/MonitorUtils.java
index c9ce875..39ef14a 100644
--- a/qa/src/main/java/org/apache/brooklyn/qa/longevity/MonitorUtils.java
+++ b/qa/src/main/java/org/apache/brooklyn/qa/longevity/MonitorUtils.java
@@ -207,6 +207,7 @@
             this.instanceCounts = instanceCounts;
         }
 
+        @Override
         public String toString() {
             return Objects.toStringHelper(this)
                     .add("totalInstances", totalInstances)
diff --git a/qa/src/test/java/org/apache/brooklyn/qa/camp/JavaWebAppsIntegrationTest.java b/qa/src/test/java/org/apache/brooklyn/qa/camp/JavaWebAppsIntegrationTest.java
index a63fc38..e83b244 100644
--- a/qa/src/test/java/org/apache/brooklyn/qa/camp/JavaWebAppsIntegrationTest.java
+++ b/qa/src/test/java/org/apache/brooklyn/qa/camp/JavaWebAppsIntegrationTest.java
@@ -238,8 +238,8 @@
             Assert.assertEquals(policy.getConfig(AutoScalerPolicy.MAX_POOL_SIZE), (Integer)5);
             Assert.assertEquals(policy.getConfig(AutoScalerPolicy.MIN_POOL_SIZE), (Integer)1);
             Assert.assertEquals(policy.getConfig(AutoScalerPolicy.METRIC), DynamicWebAppCluster.REQUESTS_PER_SECOND_IN_WINDOW_PER_NODE);
-            Assert.assertEquals(policy.getConfig(AutoScalerPolicy.METRIC_LOWER_BOUND), (Integer)10);
-            Assert.assertEquals(policy.getConfig(AutoScalerPolicy.METRIC_UPPER_BOUND), (Integer)100);
+            Assert.assertEquals(policy.getConfig(AutoScalerPolicy.METRIC_LOWER_BOUND), 10);
+            Assert.assertEquals(policy.getConfig(AutoScalerPolicy.METRIC_UPPER_BOUND), 100);
             Assert.assertTrue(policy.isRunning());
 
             EntityAsserts.assertAttributeEqualsEventually(app, Attributes.SERVICE_STATE_ACTUAL, Lifecycle.RUNNING);
diff --git a/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java b/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java
index 50ffb6b..6b3e075 100644
--- a/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java
+++ b/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java
@@ -19,7 +19,6 @@
 package org.apache.brooklyn.qa.load;
 
 import org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess;
-import org.apache.brooklyn.qa.load.AbstractLoadTest.TestConfig;
 import org.apache.brooklyn.util.time.Duration;
 import org.testng.annotations.Test;
 
diff --git a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleEntityImpl.java b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleEntityImpl.java
index 43fcd72..a762721 100644
--- a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleEntityImpl.java
+++ b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleEntityImpl.java
@@ -29,6 +29,7 @@
 
     private AnsibleLifecycleEffectorTasks lifecycleTasks;
 
+    @Override
     public void init() {
         checkNotNull(getConfig(SERVICE_NAME), "service name is missing. it has to be provided by the user");
         String playbookName = getConfig(ANSIBLE_PLAYBOOK);
@@ -41,10 +42,12 @@
         lifecycleTasks.attachLifecycleEffectors(this);
     }
 
+    @Override
     public void populateServiceNotUpDiagnostics() {
         // TODO no-op currently; should check ssh'able etc
     }
 
+    @Override
     public String ansibleCommand(String module, String args) {
         final ProcessTaskWrapper<Integer> command = DynamicTasks.queue(
             AnsiblePlaybookTasks.moduleCommand(module, config().get(ANSIBLE_VARS), lifecycleTasks.getRunDir(), args));
diff --git a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsiblePlaybookTasks.java b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsiblePlaybookTasks.java
index d9f11c2..a574f35 100644
--- a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsiblePlaybookTasks.java
+++ b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsiblePlaybookTasks.java
@@ -22,7 +22,6 @@
 import org.apache.brooklyn.api.mgmt.TaskFactory;
 import org.apache.brooklyn.core.effector.EffectorTasks;
 import org.apache.brooklyn.core.effector.ssh.SshEffectorTasks;
-import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.core.ResourceUtils;
 import org.apache.brooklyn.util.core.task.Tasks;
 import org.apache.brooklyn.util.core.task.system.ProcessTaskFactory;
diff --git a/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java b/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
index 49fd336..2051ed6 100644
--- a/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
+++ b/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
@@ -93,6 +93,7 @@
 
         if (0 != installedAlready.getExitCode()) {
             DynamicTasks.queue("install", new Runnable() {
+                @Override
                 public void run() {
                     DynamicTasks.queue(
                         SaltSshTasks.installSalt(false),
@@ -204,6 +205,7 @@
         }
     }
 
+    @Override
     public void restart(ConfigBag parameters) {
         ServiceStateLogic.setExpectedState(entity(), Lifecycle.STOPPING);
 
diff --git a/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltUtils.java b/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltUtils.java
index 29761f4..b11c06e 100644
--- a/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltUtils.java
+++ b/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltUtils.java
@@ -32,6 +32,7 @@
 
         return new ManagementContext.PropertiesReloadListener() {
             private static final long serialVersionUID = 1L;
+            @Override
             public void reloaded() {
                 // TODO: implement properties reload logic
             }
diff --git a/software/cm/salt/src/test/java/org/apache/brooklyn/entity/cm/salt/SaltIntegrationTest.java b/software/cm/salt/src/test/java/org/apache/brooklyn/entity/cm/salt/SaltIntegrationTest.java
index 0886334..c6ebebc 100644
--- a/software/cm/salt/src/test/java/org/apache/brooklyn/entity/cm/salt/SaltIntegrationTest.java
+++ b/software/cm/salt/src/test/java/org/apache/brooklyn/entity/cm/salt/SaltIntegrationTest.java
@@ -54,6 +54,7 @@
 
     private Location testLocation;
 
+    @Override
     @BeforeMethod(alwaysRun = true)
     public void setUp() throws Exception {
         super.setUp();
@@ -68,6 +69,7 @@
         }
     }
 
+    @Override
     @AfterMethod(alwaysRun = true)
     public void tearDown() throws Exception {
         if (mgmt != null) {
diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/mariadb/MariaDbNodeImpl.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/mariadb/MariaDbNodeImpl.java
index 4c960a6..3aca451 100644
--- a/software/database/src/main/java/org/apache/brooklyn/entity/database/mariadb/MariaDbNodeImpl.java
+++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/mariadb/MariaDbNodeImpl.java
@@ -31,8 +31,6 @@
 import org.apache.brooklyn.util.guava.Maybe;
 import org.apache.brooklyn.util.text.Identifiers;
 import org.apache.brooklyn.util.text.Strings;
-import org.apache.brooklyn.util.time.Duration;
-
 import com.google.common.base.Function;
 
 public class MariaDbNodeImpl extends SoftwareProcessImpl implements MariaDbNode {
@@ -87,6 +85,7 @@
                     .poll(new SshPollConfig<Double>(QUERIES_PER_SECOND_FROM_MARIADB)
                             .command(cmd)
                             .onSuccess(new Function<SshPollValue, Double>() {
+                                @Override
                                 public Double apply(SshPollValue input) {
                                     String q = Strings.getFirstWordAfter(input.getStdout(), "Queries per second avg:");
                                     return (q == null) ? null : Double.parseDouble(q);
diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/mariadb/MariaDbSshDriver.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/mariadb/MariaDbSshDriver.java
index 9ef298c..ecc8698 100644
--- a/software/database/src/main/java/org/apache/brooklyn/entity/database/mariadb/MariaDbSshDriver.java
+++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/mariadb/MariaDbSshDriver.java
@@ -138,6 +138,7 @@
         newScript(INSTALLING).body.append(commands).execute();
     }
 
+    @Override
     public MariaDbNodeImpl getEntity() { return (MariaDbNodeImpl) super.getEntity(); }
     public int getPort() { return getEntity().getPort(); }
     public String getSocketUid() { return getEntity().getSocketUid(); }
@@ -239,6 +240,7 @@
         return format("%s/bin/mysqladmin --defaults-file=%s status", getExpandedInstallDir(), Urls.mergePaths(getRunDir(), getConfigFile()));
     }
 
+    @Override
     public ProcessTaskWrapper<Integer> executeScriptAsync(String commands) {
         String filename = "mariadb-commands-"+Identifiers.makeRandomId(8);
         DynamicTasks.queue(SshEffectorTasks.put(Urls.mergePaths(getRunDir(), filename)).contents(commands).summary("copying datastore script to execute "+filename));
diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/MySqlNodeImpl.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/MySqlNodeImpl.java
index d71d5e1..40637d4 100644
--- a/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/MySqlNodeImpl.java
+++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/MySqlNodeImpl.java
@@ -33,7 +33,6 @@
 import org.apache.brooklyn.util.guava.Maybe;
 import org.apache.brooklyn.util.text.Identifiers;
 import org.apache.brooklyn.util.text.Strings;
-import org.apache.brooklyn.util.time.Duration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeChefImplFromScratch.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeChefImplFromScratch.java
index 0c52f20..ec9f08f 100644
--- a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeChefImplFromScratch.java
+++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeChefImplFromScratch.java
@@ -53,6 +53,7 @@
     
     private SshFeed feed;
 
+    @Override
     public void init() {
         super.init();
         new ChefPostgreSqlLifecycle().attachLifecycleEffectors(this);
@@ -126,6 +127,7 @@
     public static class ExecuteScriptEffectorBody extends EffectorBody<String> {
         public static final ConfigKey<String> SCRIPT = ConfigKeys.newStringConfigKey("script", "contents of script to run");
         
+        @Override
         public String call(ConfigBag parameters) {
             return DynamicTasks.queue(SshEffectorTasks.ssh(
                     BashCommands.pipeTextTo(
diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java
index 0421a98..ed7ba94 100644
--- a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java
+++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java
@@ -29,6 +29,7 @@
     @SuppressWarnings("unused")
     private static final Logger LOG = LoggerFactory.getLogger(PostgreSqlNodeImpl.class);
 
+    @Override
     public Class<?> getDriverInterface() {
         return PostgreSqlDriver.class;
     }
diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlSshDriver.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlSshDriver.java
index 53658d7..0eec9cd 100644
--- a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlSshDriver.java
+++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlSshDriver.java
@@ -242,6 +242,7 @@
 
     private static Function<String, String> givenDirIfFileExistsInItLinkToDir(final String filename, final String linkToMake) {
         return new Function<String, String>() {
+            @Override
             public String apply(@Nullable String dir) {
                 return ifExecutableElse1(Urls.mergePaths(dir, filename),
                     chainGroup("echo 'found "+filename+" in "+dir+" so linking to it in "+linkToMake+"'", "ln -s "+dir+" "+linkToMake));
@@ -558,6 +559,7 @@
         return callPgctl("status", false);
     }
 
+    @Override
     public ProcessTaskWrapper<Integer> executeScriptAsync(String commands) {
         String filename = "postgresql-commands-"+Identifiers.makeRandomId(8);
         installFile(Streams.newInputStreamWithContents(commands), filename);
diff --git a/software/database/src/test/java/org/apache/brooklyn/entity/database/mariadb/MariaDbLiveRackspaceTest.java b/software/database/src/test/java/org/apache/brooklyn/entity/database/mariadb/MariaDbLiveRackspaceTest.java
index 85a6bb2..6881273 100644
--- a/software/database/src/test/java/org/apache/brooklyn/entity/database/mariadb/MariaDbLiveRackspaceTest.java
+++ b/software/database/src/test/java/org/apache/brooklyn/entity/database/mariadb/MariaDbLiveRackspaceTest.java
@@ -78,6 +78,7 @@
         test("Red Hat Enterprise Linux 6");
     }
 
+    @Override
     @Test(groups = {"Live"})
     public void test_localhost() throws Exception {
         super.test_localhost();
diff --git a/software/database/src/test/java/org/apache/brooklyn/entity/database/mysql/MySqlLiveRackspaceTest.java b/software/database/src/test/java/org/apache/brooklyn/entity/database/mysql/MySqlLiveRackspaceTest.java
index e008cdd..9b80c3a 100644
--- a/software/database/src/test/java/org/apache/brooklyn/entity/database/mysql/MySqlLiveRackspaceTest.java
+++ b/software/database/src/test/java/org/apache/brooklyn/entity/database/mysql/MySqlLiveRackspaceTest.java
@@ -79,6 +79,7 @@
         test("Red Hat Enterprise Linux 6");
     }
 
+    @Override
     @Test(enabled=false, groups = {"Live"}) // only run this in MySqlIntegrationTest
     public void test_localhost() throws Exception {
         super.test_localhost();
diff --git a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlChefTest.java b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlChefTest.java
index 6f1d014..c682b23 100644
--- a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlChefTest.java
+++ b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlChefTest.java
@@ -71,7 +71,7 @@
             t.getTask().blockUntilEnded(Duration.TEN_SECONDS);
             if (!t.isDone())
                 Assert.fail("Task not finished yet: "+t.getTask());
-            Assert.assertNotEquals(t.get(), (Integer)0, "Task ended with code "+t.get()+"; output: "+t.getStdout() );
+            Assert.assertNotEquals(t.get(), 0, "Task ended with code "+t.get()+"; output: "+t.getStdout() );
         } catch (Exception e) {
             // host has been killed, that is fine
             log.info("Machine "+targetMachine+" destroyed on stop (expected - "+e+")");
diff --git a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlInitializeDatabaseLiveTest.java b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlInitializeDatabaseLiveTest.java
index 67cc650..ad18279 100644
--- a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlInitializeDatabaseLiveTest.java
+++ b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlInitializeDatabaseLiveTest.java
@@ -38,6 +38,7 @@
     public static final Logger log = LoggerFactory.getLogger(PostgreSqlIntegrationTest.class);
     JcloudsLocation jcloudsLocation;
 
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
diff --git a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlRackspaceLiveTest.java b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlRackspaceLiveTest.java
index 502d1bd..ab94ed1 100644
--- a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlRackspaceLiveTest.java
+++ b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlRackspaceLiveTest.java
@@ -79,6 +79,7 @@
         test("Red Hat Enterprise Linux 6");
     }
 
+    @Override
     @Test(groups = "Live")
     public void test_localhost() throws Exception {
         super.test_localhost();
diff --git a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlRestartIntegrationTest.java b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlRestartIntegrationTest.java
index 185fec3..604886e 100644
--- a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlRestartIntegrationTest.java
+++ b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlRestartIntegrationTest.java
@@ -42,6 +42,7 @@
     // TODO The second start() will fail because customize operations forbidden while there is existing data:
     //      "If you want to create a new database system, either remove or empty".
     // I haven't checked whether it damaged the data in the database though!
+    @Override
     @Test(enabled=false, groups={"Integration", "WIP"})
     public void testStopProcessAndStart() throws Exception {
         super.testStopProcessAndStart();
diff --git a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlTest.java b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlTest.java
index 9aa4ed1..2342072 100644
--- a/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlTest.java
+++ b/software/database/src/test/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlTest.java
@@ -54,6 +54,7 @@
     private SshMachineLocation stubbedMachine;
     
     public static class PostgreSqlNodeForTestingImpl extends PostgreSqlNodeImpl {
+        @Override
         public SoftwareProcessDriver doInitDriver(MachineLocation machine) {
             return super.doInitDriver(machine);
         }
diff --git a/software/database/src/test/java/org/apache/brooklyn/entity/database/rubyrep/RubyRepRackspaceLiveTest.java b/software/database/src/test/java/org/apache/brooklyn/entity/database/rubyrep/RubyRepRackspaceLiveTest.java
index 640e4df..93e5cc3 100644
--- a/software/database/src/test/java/org/apache/brooklyn/entity/database/rubyrep/RubyRepRackspaceLiveTest.java
+++ b/software/database/src/test/java/org/apache/brooklyn/entity/database/rubyrep/RubyRepRackspaceLiveTest.java
@@ -108,18 +108,21 @@
     }
     
     // disable inherited non-live tests
+    @Override
     @Test(enabled = false, groups = "Integration")
     public void test_localhost_mysql() throws Exception {
         super.test_localhost_mysql();
     }
 
     // disable inherited non-live tests
+    @Override
     @Test(enabled = false, groups = "Integration")
     public void test_localhost_postgres() throws Exception {
         super.test_localhost_postgres();
     }
 
     // disable inherited non-live tests
+    @Override
     @Test(enabled = false, groups = "Integration")
     public void test_localhost_postgres_mysql() throws Exception {
         super.test_localhost_postgres_mysql();
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQBrokerImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQBrokerImpl.java
index 6954e81..828f567 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQBrokerImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQBrokerImpl.java
@@ -51,6 +51,7 @@
         Entities.getRequiredUrlConfig(this, TEMPLATE_CONFIGURATION_URL);
     }
     
+    @Override
     public void setBrokerUrl() {
         sensors().set(BROKER_URL, String.format("tcp://%s:%d", getAttribute(HOSTNAME), getAttribute(OPEN_WIRE_PORT)));
     }
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQDestinationImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQDestinationImpl.java
index 559a193..524ab4d 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQDestinationImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQDestinationImpl.java
@@ -21,13 +21,13 @@
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 
-import com.google.common.base.Preconditions;
-
 import org.apache.brooklyn.entity.messaging.jms.JMSDestinationImpl;
 import org.apache.brooklyn.feed.jmx.JmxFeed;
 import org.apache.brooklyn.feed.jmx.JmxHelper;
 import org.apache.brooklyn.util.exceptions.Exceptions;
 
+import com.google.common.base.Preconditions;
+
 public abstract class ActiveMQDestinationImpl extends JMSDestinationImpl implements ActiveMQDestination {
     protected ObjectName brokerMBeanName;
     protected transient JmxHelper jmxHelper;
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQQueueImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQQueueImpl.java
index f696c02..ef1617a 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQQueueImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQQueueImpl.java
@@ -35,10 +35,12 @@
         sensors().set(QUEUE_NAME, getName());
     }
 
+    @Override
     public String getQueueName() {
         return getName();
     }
     
+    @Override
     public void create() {
         log.debug("{} adding queue {} to broker {}", new Object[] {this, getName(), jmxHelper.getAttribute(brokerMBeanName, "BrokerName")});
         
@@ -47,6 +49,7 @@
         connectSensors();
     }
 
+    @Override
     public void delete() {
         jmxHelper.operation(brokerMBeanName, "removeQueue", getName());
         disconnectSensors();
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQTopicImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQTopicImpl.java
index 365b7b7..c8ba5c6 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQTopicImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/activemq/ActiveMQTopicImpl.java
@@ -35,15 +35,18 @@
         connectSensors();
     }
 
+    @Override
     public void delete() {
         jmxHelper.operation(brokerMBeanName, "removeTopic", getName());
         disconnectSensors();
     }
 
+    @Override
     public void connectSensors() {
         //TODO add sensors for topics
     }
 
+    @Override
     public String getTopicName() {
         return getName();
     }
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/jms/JMSDestinationImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/jms/JMSDestinationImpl.java
index 7fc8ee6..49dc614 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/jms/JMSDestinationImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/jms/JMSDestinationImpl.java
@@ -41,8 +41,10 @@
 
     protected abstract void disconnectSensors();
 
+    @Override
     public abstract void delete();
 
+    @Override
     public void destroy() {
         disconnectSensors();
         delete();
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/kafka/KafkaZooKeeperImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/kafka/KafkaZooKeeperImpl.java
index 4f919e5..9984650 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/kafka/KafkaZooKeeperImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/kafka/KafkaZooKeeperImpl.java
@@ -20,7 +20,6 @@
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.brooklyn.core.annotation.EffectorParam;
 import org.apache.brooklyn.entity.zookeeper.AbstractZooKeeperImpl;
 
 /**
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/qpid/QpidBrokerImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/qpid/QpidBrokerImpl.java
index 67b132c..34c26db 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/qpid/QpidBrokerImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/qpid/QpidBrokerImpl.java
@@ -28,7 +28,6 @@
 import javax.management.ObjectName;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.core.entity.Entities;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.brooklyn.entity.java.JmxSupport;
@@ -54,10 +53,14 @@
         super();
     }
 
+    @Override
     public String getVirtualHost() { return getAttribute(VIRTUAL_HOST_NAME); }
+    @Override
     public String getAmqpVersion() { return getAttribute(AMQP_VERSION); }
+    @Override
     public Integer getAmqpPort() { return getAttribute(AMQP_PORT); }
 
+    @Override
     public void setBrokerUrl() {
         String urlFormat = "amqp://guest:guest@/%s?brokerlist='tcp://%s:%d'";
         sensors().set(BROKER_URL, format(urlFormat, getAttribute(VIRTUAL_HOST_NAME), getAttribute(HOSTNAME), getAttribute(AMQP_PORT)));
@@ -69,6 +72,7 @@
         new JmxSupport(this, null).recommendJmxRmiCustomAgent();
     }
 
+    @Override
     public void waitForServiceUp(long duration, TimeUnit units) {
         super.waitForServiceUp(duration, units);
 
@@ -88,12 +92,14 @@
         }
     }
     
+    @Override
     public QpidQueue createQueue(Map properties) {
         QpidQueue result = addChild(EntitySpec.create(QpidQueue.class).configure(properties));
         result.create();
         return result;
     }
 
+    @Override
     public QpidTopic createTopic(Map properties) {
         QpidTopic result = addChild(EntitySpec.create(QpidTopic.class).configure(properties));
         result.create();
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitBrokerImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitBrokerImpl.java
index bdf7299..5949e56 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitBrokerImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitBrokerImpl.java
@@ -23,7 +23,6 @@
 import java.util.Map;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.entity.software.base.SoftwareProcessImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,8 +35,11 @@
 public class RabbitBrokerImpl extends SoftwareProcessImpl implements RabbitBroker {
     private static final Logger log = LoggerFactory.getLogger(RabbitBrokerImpl.class);
 
+    @Override
     public String getVirtualHost() { return getAttribute(VIRTUAL_HOST_NAME); }
+    @Override
     public String getAmqpVersion() { return getAttribute(AMQP_VERSION); }
+    @Override
     public Integer getAmqpPort() { return getAttribute(AMQP_PORT); }
 
     public RabbitBrokerImpl() {
@@ -69,11 +71,13 @@
         // queueNames.each { String name -> addQueue(name) }
     }
 
+    @Override
     public void setBrokerUrl() {
         String urlFormat = "amqp://guest:guest@%s:%d/%s";
         sensors().set(BROKER_URL, format(urlFormat, getAttribute(HOSTNAME), getAttribute(AMQP_PORT), getAttribute(VIRTUAL_HOST_NAME)));
     }
 
+    @Override
     public RabbitQueue createQueue(Map properties) {
         RabbitQueue result = addChild(EntitySpec.create(RabbitQueue.class).configure(properties));
         result.create();
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitQueue.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitQueue.java
index 03b3d68..076a55c 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitQueue.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitQueue.java
@@ -79,6 +79,7 @@
     /**
      * Return the AMQP name for the queue.
      */
+    @Override
     public String getQueueName() {
         return getName();
     }
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java
index 5951963..cf22177 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java
@@ -37,7 +37,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
-import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.entity.messaging.amqp.AmqpServer;
 import org.apache.brooklyn.entity.software.base.AbstractSoftwareProcessSshDriver;
 import org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper;
@@ -45,7 +44,6 @@
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.net.Networking;
 import org.apache.brooklyn.util.net.Urls;
-import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.text.Strings;
 
 /**
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/storm/StormSshDriver.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/storm/StormSshDriver.java
index f06c0bc..03f335e 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/storm/StormSshDriver.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/storm/StormSshDriver.java
@@ -103,6 +103,7 @@
         return result;
     }
 
+    @Override
     public String getJvmOptsLine() {
         return Optional.fromNullable(getShellEnvironment().get("JAVA_OPTS")).or("");
     }
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsembleImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsembleImpl.java
index 2588921..816d474 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsembleImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsembleImpl.java
@@ -21,7 +21,6 @@
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.sensor.EnricherSpec;
-import org.apache.brooklyn.core.entity.Attributes;
 import org.apache.brooklyn.enricher.stock.Enrichers;
 import org.apache.brooklyn.entity.group.AbstractMembershipTrackingPolicy;
 import org.apache.brooklyn.entity.group.DynamicClusterImpl;
diff --git a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/LocalhostLiveTest.java b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/LocalhostLiveTest.java
index 89afe00..b1f69d6 100644
--- a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/LocalhostLiveTest.java
+++ b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/LocalhostLiveTest.java
@@ -25,6 +25,7 @@
 
     private static final String NAMED_LOCATION = "localhost";
 
+    @Override
     public String getLocation() {
         return NAMED_LOCATION;
     }
diff --git a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/topologies/ExclamationBolt.java b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/topologies/ExclamationBolt.java
index a10a30e..34ddbe0 100644
--- a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/topologies/ExclamationBolt.java
+++ b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/topologies/ExclamationBolt.java
@@ -22,7 +22,6 @@
 
 import backtype.storm.task.OutputCollector;
 import backtype.storm.task.TopologyContext;
-import backtype.storm.topology.IRichBolt;
 import backtype.storm.topology.OutputFieldsDeclarer;
 import backtype.storm.topology.base.BaseRichBolt;
 import backtype.storm.tuple.Fields;
diff --git a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/zookeeper/ZooKeeperTestSupport.java b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/zookeeper/ZooKeeperTestSupport.java
index f1987d2..4169468 100644
--- a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/zookeeper/ZooKeeperTestSupport.java
+++ b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/zookeeper/ZooKeeperTestSupport.java
@@ -22,7 +22,6 @@
 import java.io.Closeable;
 import java.util.concurrent.CountDownLatch;
 
-import org.apache.brooklyn.location.paas.PaasLocation;
 import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.WatchedEvent;
diff --git a/software/monitoring/src/main/java/org/apache/brooklyn/entity/monitoring/monit/MonitNodeImpl.java b/software/monitoring/src/main/java/org/apache/brooklyn/entity/monitoring/monit/MonitNodeImpl.java
index f3b2863..fbf42a1 100644
--- a/software/monitoring/src/main/java/org/apache/brooklyn/entity/monitoring/monit/MonitNodeImpl.java
+++ b/software/monitoring/src/main/java/org/apache/brooklyn/entity/monitoring/monit/MonitNodeImpl.java
@@ -28,7 +28,6 @@
 import org.apache.brooklyn.feed.ssh.SshPollValue;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.util.text.Strings;
-import org.apache.brooklyn.util.time.Duration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/software/monitoring/src/test/java/org/apache/brooklyn/entity/monitoring/monit/MonitIntegrationTest.java b/software/monitoring/src/test/java/org/apache/brooklyn/entity/monitoring/monit/MonitIntegrationTest.java
index 1305738..e88a78d 100644
--- a/software/monitoring/src/test/java/org/apache/brooklyn/entity/monitoring/monit/MonitIntegrationTest.java
+++ b/software/monitoring/src/test/java/org/apache/brooklyn/entity/monitoring/monit/MonitIntegrationTest.java
@@ -55,6 +55,7 @@
     LocalhostMachineProvisioningLocation loc;
     Process testProcess;
     
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
@@ -89,6 +90,7 @@
         MySqlNode mySqlNode = sameServerEntity.addChild(EntitySpec.create(MySqlNode.class));
 
         Function<String, Map<String, Object>> controlFileSubstitutionsFunction = new Function<String, Map<String, Object>>() {
+            @Override
             public Map<String, Object> apply(String input) {
                 return ImmutableMap.<String, Object>of("targetPidFile", input);
             }
@@ -120,6 +122,7 @@
         // This runs on localhost; free to obtain another machine with impunity.
         final String osFlavor;
         MachineDetails machineDetails = app.getExecutionContext().submit(new Callable<MachineDetails>() {
+            @Override
             public MachineDetails call() throws Exception {
                 return loc.obtain().getMachineDetails();
             }}).get();
@@ -146,6 +149,7 @@
             .configure(MySqlNode.DATA_DIR, mySqlDataDir));
 
         Function<String, Map<String, Object>> controlFileSubstitutionsFunction = new Function<String, Map<String, Object>>() {
+            @Override
             public Map<String, Object> apply(String input) {
                 return ImmutableMap.<String, Object>of(
                     "targetPidFile", input,
diff --git a/software/network/src/main/java/org/apache/brooklyn/entity/network/bind/BindDnsServer.java b/software/network/src/main/java/org/apache/brooklyn/entity/network/bind/BindDnsServer.java
index 3f3d30b..1b622ce 100644
--- a/software/network/src/main/java/org/apache/brooklyn/entity/network/bind/BindDnsServer.java
+++ b/software/network/src/main/java/org/apache/brooklyn/entity/network/bind/BindDnsServer.java
@@ -27,7 +27,6 @@
 import org.apache.brooklyn.config.ConfigKey;
 import org.apache.brooklyn.core.annotation.Effector;
 import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.entity.Attributes;
 import org.apache.brooklyn.core.location.PortRanges;
 import org.apache.brooklyn.core.sensor.PortAttributeSensorAndConfigKey;
 import org.apache.brooklyn.core.sensor.Sensors;
diff --git a/software/network/src/main/java/org/apache/brooklyn/entity/network/bind/BindDnsServerSshDriver.java b/software/network/src/main/java/org/apache/brooklyn/entity/network/bind/BindDnsServerSshDriver.java
index 150cfb9..e33089b 100644
--- a/software/network/src/main/java/org/apache/brooklyn/entity/network/bind/BindDnsServerSshDriver.java
+++ b/software/network/src/main/java/org/apache/brooklyn/entity/network/bind/BindDnsServerSshDriver.java
@@ -166,6 +166,7 @@
         return Os.mergePaths(getOsSupport().getConfigDirectory(), "rfc1912.zone");
     }
 
+    @Override
     public BindOsSupport getOsSupport() {
         BindOsSupport result = osSupport;
         if (result == null) {
diff --git a/software/network/src/test/java/org/apache/brooklyn/entity/network/bind/BindDnsServerEc2LiveTest.java b/software/network/src/test/java/org/apache/brooklyn/entity/network/bind/BindDnsServerEc2LiveTest.java
index 7c6391a..4063015 100644
--- a/software/network/src/test/java/org/apache/brooklyn/entity/network/bind/BindDnsServerEc2LiveTest.java
+++ b/software/network/src/test/java/org/apache/brooklyn/entity/network/bind/BindDnsServerEc2LiveTest.java
@@ -26,6 +26,7 @@
 public class BindDnsServerEc2LiveTest extends AbstractEc2LiveTest {
     private static final Logger LOG = LoggerFactory.getLogger(BindDnsServerEc2LiveTest.class);
 
+    @Override
     protected void doTest(Location testLocation) throws Exception {
         BindDnsServerLiveTest.testBindStartsAndUpdates(app, testLocation);
     }
diff --git a/software/network/src/test/java/org/apache/brooklyn/entity/network/bind/BindDnsServerSoftlayerLiveTest.java b/software/network/src/test/java/org/apache/brooklyn/entity/network/bind/BindDnsServerSoftlayerLiveTest.java
index f65672c..015ba93 100644
--- a/software/network/src/test/java/org/apache/brooklyn/entity/network/bind/BindDnsServerSoftlayerLiveTest.java
+++ b/software/network/src/test/java/org/apache/brooklyn/entity/network/bind/BindDnsServerSoftlayerLiveTest.java
@@ -24,6 +24,7 @@
 
 public class BindDnsServerSoftlayerLiveTest extends AbstractSoftlayerLiveTest {
 
+    @Override
     @Test(groups = "Live")
     protected void doTest(Location testLocation) throws Exception {
         BindDnsServerLiveTest.testBindStartsAndUpdates(app, testLocation);
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
index 43bf4b2..488f0e9 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
@@ -184,6 +184,7 @@
     }
     
     // Used for freemarker
+    @Override
     public String getMajorMinorVersion() {
         String version = getConfig(CassandraNode.SUGGESTED_VERSION);
         if (Strings.isBlank(version)) return "";
@@ -270,6 +271,7 @@
     }
     /** not always the private IP, if public IP has been insisted on for broadcast, e.g. setting up a rack topology */
     // have not confirmed this does the right thing in all clouds ... only used for rack topology however
+    @Override
     public String getPrivateIp() {
         String sensorName = getConfig(BROADCAST_ADDRESS_SENSOR);
         if (Strings.isNonBlank(sensorName)) {
@@ -279,6 +281,7 @@
             return Strings.isNonBlank(subnetAddress) ? subnetAddress : getAttribute(CassandraNode.ADDRESS);
         }
     }
+    @Override
     public String getPublicIp() {
         // may need to be something else in google
         return getAttribute(CassandraNode.ADDRESS);
@@ -343,7 +346,7 @@
             if (name == null) {
                 name = "UNKNOWN_DATACENTER";
             }
-            sensors().set((AttributeSensor<String>)DATACENTER_NAME, name);
+            sensors().set(DATACENTER_NAME, name);
         }
         return name;
     }
@@ -362,7 +365,7 @@
             if (name == null) {
                 name = "UNKNOWN_RACK";
             }
-            sensors().set((AttributeSensor<String>)RACK_NAME, name);
+            sensors().set(RACK_NAME, name);
         }
         return name;
     }
@@ -583,6 +586,7 @@
         public ThriftLatencyChecker(CassandraNode entity) {
             this.entity = entity;
         }
+        @Override
         public Long call() {
             Integer privatePort = entity.getThriftPort();
             if (privatePort == null) return -1L;
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/TokenGenerators.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/TokenGenerators.java
index f29a813..c7337e0 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/TokenGenerators.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/TokenGenerators.java
@@ -44,8 +44,11 @@
         
         public static final BigInteger TWO = BigInteger.valueOf(2);
         
+        @Override
         public abstract BigInteger max();
+        @Override
         public abstract BigInteger min();
+        @Override
         public abstract BigInteger range();
 
         private final Set<BigInteger> currentTokens = Sets.newTreeSet();
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseClusterImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseClusterImpl.java
index 4396ed1..1c9a37c 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseClusterImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseClusterImpl.java
@@ -116,6 +116,7 @@
     // so a feed is used to determine when a bucket has finished being created
     private final AtomicReference<HttpFeed> resetBucketCreation = new AtomicReference<HttpFeed>();
 
+    @Override
     public void init() {
         log.info("Initializing the Couchbase cluster...");
         super.init();
@@ -228,7 +229,7 @@
                     Tasks.resetBlockingDetails();
                 }
                 
-                ((CouchbaseNode)getPrimaryNode()).rebalance();
+                getPrimaryNode().rebalance();
             } else {
                 if (getQuorumSize()>1) {
                     log.warn(this+" is not quorate; will likely fail later, but proceeding for now");
@@ -370,6 +371,7 @@
     }
 
 
+    @Override
     protected EntitySpec<?> getMemberSpec() {
         EntitySpec<?> result = super.getMemberSpec();
         if (result != null) return result;
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseNodeImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseNodeImpl.java
index 4dc9bbd..0642bf3 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseNodeImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseNodeImpl.java
@@ -107,6 +107,7 @@
         });
     }
 
+    @Override
     protected Map<String, Object> obtainProvisioningFlags(@SuppressWarnings("rawtypes") MachineProvisioningLocation location) {
         ConfigBag result = ConfigBag.newInstance(super.obtainProvisioningFlags(location));
         result.configure(CloudLocationConfig.OS_64_BIT, true);
@@ -201,6 +202,7 @@
         }
     }
 
+    @Override
     public void connectSensors() {
         super.connectSensors();
         connectServiceUpIsRunning();
@@ -229,6 +231,7 @@
             .build();
     }
 
+    @Override
     public void disconnectSensors() {
         super.disconnectSensors();
         disconnectServiceUpIsRunning();
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeImpl.java
index 78a85f9..2800d5d 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeImpl.java
@@ -20,8 +20,6 @@
 
 import java.util.concurrent.TimeUnit;
 
-import javax.annotation.Nullable;
-
 import org.apache.brooklyn.core.entity.EntityFunctions;
 import org.apache.brooklyn.entity.software.base.SoftwareProcessImpl;
 import org.apache.brooklyn.entity.webapp.JavaWebAppSoftwareProcessImpl;
@@ -34,7 +32,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Function;
 import com.google.common.base.Functions;
 
 /**
@@ -47,7 +44,9 @@
     public CouchDBNodeImpl() {
     }
 
+    @Override
     public Integer getHttpPort() { return getAttribute(CouchDBNode.HTTP_PORT); }
+    @Override
     public Integer getHttpsPort() { return getAttribute(CouchDBNode.HTTPS_PORT); }
     public String getClusterName() { return getAttribute(CouchDBNode.CLUSTER_NAME); }
 
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBClientSshDriver.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBClientSshDriver.java
index bd5e552..d73fdd2 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBClientSshDriver.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBClientSshDriver.java
@@ -102,6 +102,7 @@
         return getRunDir() + "/userScripts/" ;
     }
     
+    @Override
     public void runScript(String preStart, String scriptName) {
         AbstractMongoDBServer server = getServer();
         String host = server.getAttribute(AbstractMongoDBServer.HOSTNAME);
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBRouterImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBRouterImpl.java
index 149457d..dbfe621 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBRouterImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBRouterImpl.java
@@ -68,6 +68,7 @@
                 .poll(new FunctionPollConfig<Integer, Integer>(SHARD_COUNT)
                         .period(5, TimeUnit.SECONDS)
                         .callable(new Callable<Integer>() {
+                            @Override
                             public Integer call() throws Exception {
                                 MongoDBClientSupport clientSupport = MongoDBClientSupport.forServer(MongoDBRouterImpl.this);
                                 return (int) clientSupport.getShardCount();
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardClusterImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardClusterImpl.java
index e0c0f35..bdd1e3a 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardClusterImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardClusterImpl.java
@@ -75,6 +75,7 @@
     @Override
     public void start(Collection<? extends Location> locations) {
         subscriptions().subscribeToMembers(this, Startable.SERVICE_UP, new SensorEventListener<Boolean>() {
+            @Override
             public void onEvent(SensorEvent<Boolean> event) {
                 addShards();
             }
@@ -84,6 +85,7 @@
         
         MongoDBRouterCluster routers = getParent().getAttribute(MongoDBShardedDeployment.ROUTER_CLUSTER);
         subscriptions().subscribe(routers, MongoDBRouterCluster.ANY_RUNNING_ROUTER, new SensorEventListener<MongoDBRouter>() {
+            @Override
             public void onEvent(SensorEvent<MongoDBRouter> event) {
                 if (event.getValue() != null)
                     addShards();
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/redis/RedisStoreSshDriver.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/redis/RedisStoreSshDriver.java
index a46b1b0..9264701 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/redis/RedisStoreSshDriver.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/redis/RedisStoreSshDriver.java
@@ -24,11 +24,9 @@
 import java.util.Map;
 
 import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.entity.software.base.AbstractSoftwareProcessSshDriver;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.ssh.BashCommands;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/riak/RiakClusterImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/riak/RiakClusterImpl.java
index 3065015..a408459 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/riak/RiakClusterImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/riak/RiakClusterImpl.java
@@ -65,6 +65,7 @@
 
     private transient Object mutex = new Object[0];
 
+    @Override
     public void init() {
         super.init();
         log.info("Initializing the riak cluster...");
@@ -98,6 +99,7 @@
         }
     }
 
+    @Override
     protected EntitySpec<?> getMemberSpec() {
         EntitySpec<?> result = config().get(MEMBER_SPEC);
         if (result!=null) return result;
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java
index af2e53b..8444096 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java
@@ -153,11 +153,11 @@
             // TODO osDetails.getName() is returning "linux", instead of debian/ubuntu on AWS with jenkins image,
             //      running as integration test targetting localhost.
             // TODO Debian support (default debian image fails with 'sudo: command not found')
-            downloadUrl = (String)entity.getAttribute(RiakNode.DOWNLOAD_URL_DEBIAN);
+            downloadUrl = entity.getAttribute(RiakNode.DOWNLOAD_URL_DEBIAN);
             osReleaseCmd = osDetails.getVersion().substring(0, osDetails.getVersion().indexOf("."));
         } else {
             // assume Ubuntu
-            downloadUrl = (String)entity.getAttribute(RiakNode.DOWNLOAD_URL_UBUNTU);
+            downloadUrl = entity.getAttribute(RiakNode.DOWNLOAD_URL_UBUNTU);
             osReleaseCmd = "`lsb_release -sc` && " +
                     "export OS_RELEASE=`([[ \"lucid natty precise\" =~ (^| )\\$OS_RELEASE($| ) ]] && echo $OS_RELEASE || echo precise)`";
         }
@@ -371,6 +371,7 @@
         return entity.getAttribute(RiakNode.RIAK_ON_PATH);
     }
 
+    @Override
     public String getRiakEtcDir() {
         return isPackageInstall() ? "/etc/riak" : Urls.mergePaths(getExpandedInstallDir(), "etc");
     }
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/solr/SolrServerDriver.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/solr/SolrServerDriver.java
index 866aedb..2968fa2 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/solr/SolrServerDriver.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/solr/SolrServerDriver.java
@@ -19,7 +19,6 @@
 package org.apache.brooklyn.entity.nosql.solr;
 
 import org.apache.brooklyn.entity.java.JavaSoftwareProcessDriver;
-import org.apache.brooklyn.entity.software.base.SoftwareProcessDriver;
 
 public interface SolrServerDriver extends JavaSoftwareProcessDriver {
 
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/solr/SolrServerSshDriver.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/solr/SolrServerSshDriver.java
index 0b14bf6..ad11233 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/solr/SolrServerSshDriver.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/solr/SolrServerSshDriver.java
@@ -18,8 +18,6 @@
  */
 package org.apache.brooklyn.entity.nosql.solr;
 
-import static java.lang.String.format;
-
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -27,7 +25,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.entity.java.JavaSoftwareProcessSshDriver;
 import org.apache.brooklyn.entity.java.UsesJmx;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
@@ -81,6 +78,7 @@
                 .execute();
     }
 
+    @Override
     public Set<Integer> getPortsUsed() {
         Set<Integer> result = Sets.newLinkedHashSet(super.getPortsUsed());
         result.addAll(getPortMap().values());
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterIntegrationTest.java
index 6c5b67a..fc1a600 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterIntegrationTest.java
@@ -127,6 +127,7 @@
         // may take some time to be consistent (with new thrift_latency checks on the node,
         // contactability should not be an issue, but consistency still might be)
         Asserts.succeedsEventually(MutableMap.of("timeout", 120*1000), new Runnable() {
+            @Override
             public void run() {
                 boolean open = CassandraDatacenterLiveTest.isSocketOpen(node);
                 Boolean consistant = open ? CassandraDatacenterLiveTest.areVersionsConsistent(node) : null;
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterLiveTest.java
index d229e8a..14ee88c 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterLiveTest.java
@@ -187,6 +187,7 @@
         // may take some time to be consistent (with new thrift_latency checks on the node,
         // contactability should not be an issue, but consistency still might be)
         Asserts.succeedsEventually(MutableMap.of("timeout", Duration.TWO_MINUTES), new Runnable() {
+            @Override
             public void run() {
                 for (Entity n : nodes) {
                     CassandraNode node = (CassandraNode) n;
@@ -202,6 +203,7 @@
     protected static void assertSingleTokenConsistent(final List<CassandraNode> nodes) {
         final int numNodes = nodes.size();
         Asserts.succeedsEventually(MutableMap.of("timeout", Duration.TWO_MINUTES), new Runnable() {
+            @Override
             public void run() {
                 Set<BigInteger> alltokens = Sets.newLinkedHashSet();
                 for (Entity node : nodes) {
@@ -222,6 +224,7 @@
         final int tokensPerNode = Iterables.get(nodes, 0).getNumTokensPerNode();
         
         Asserts.succeedsEventually(MutableMap.of("timeout", Duration.TWO_MINUTES), new Runnable() {
+            @Override
             public void run() {
                 Set<BigInteger> alltokens = Sets.newLinkedHashSet();
                 for (Entity node : nodes) {
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterRebindIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterRebindIntegrationTest.java
index 939ac1d..0e4aab6 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterRebindIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterRebindIntegrationTest.java
@@ -50,6 +50,7 @@
 
     private LocalhostMachineProvisioningLocation localhostProvisioningLocation;
     
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         CassandraNodeIntegrationTest.assertCassandraPortsAvailableEventually();
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterTest.java
index 7e32569..3635831 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterTest.java
@@ -99,7 +99,7 @@
         // calling the driver stop for this entity will cause SERVICE_UP to become false, and stay false
         // (and that's all it does, incidentally); if we just set the attribute it will become true on serviceUp sensor feed
         log.info("Simulating failure of cassandra node "+e1);
-        ((EmptySoftwareProcess)e1).getDriver().stop();
+        e1.getDriver().stop();
         // not necessary, but speeds things up:
         if (fast)
             e1.sensors().set(Attributes.SERVICE_UP, false);
@@ -118,7 +118,7 @@
         if (!checkSeedsConstantOnRejoining) {
             // cluster should not revert to e1+e2, simply because e1 has come back; but e1 should rejoin the group
             // (not that important, and waits for 1s, so only done as part of integration)
-            ((EmptySoftwareProcessSshDriver)(((EmptySoftwareProcess)e1).getDriver())).launch();
+            ((EmptySoftwareProcessSshDriver)(e1.getDriver())).launch();
             if (fast)
                 e1.sensors().set(Attributes.SERVICE_UP, true);
             EntityAsserts.assertAttributeEqualsEventually(e1, CassandraNode.SERVICE_UP, true);
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraFabricTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraFabricTest.java
index 55104ca..d21e336 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraFabricTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraFabricTest.java
@@ -113,6 +113,7 @@
                         .configure(CassandraDatacenter.MEMBER_SPEC, EntitySpec.create(DummyCassandraNode.class))));
 
         Thread t = new Thread() {
+            @Override
             public void run() {
                 app.start(ImmutableList.of(loc1, loc2));
             }
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java
index 3baff9f..3626dff 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java
@@ -40,7 +40,7 @@
             .configure(CouchbaseNode.COUCHBASE_ADMIN_USERNAME, "Administrator")
             .configure(CouchbaseNode.COUCHBASE_ADMIN_PASSWORD, "Password")
             .configure(DynamicCluster.INITIAL_SIZE, 3)
-            .configure(CouchbaseCluster.CREATE_BUCKETS, (List<Map<String,Object>>)ImmutableList.of(
+            .configure(CouchbaseCluster.CREATE_BUCKETS, ImmutableList.of(
                 (Map<String,Object>)ImmutableMap.<String, Object>of(
                     "bucket", "default",
                     "bucket-ramsize", 100,
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java
index 86860b4..199acc3 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java
@@ -111,6 +111,7 @@
             assertEquals(HttpValueFunctions.jsonContents("foo", String.class).apply(getResponse), "bar");
         }
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 int count = clusterDocumentCount();
                 assertTrue(count >= 1, "count="+count);
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBTestHelper.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBTestHelper.java
index 76b2a91..13ca374 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBTestHelper.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBTestHelper.java
@@ -18,7 +18,6 @@
  */
 package org.apache.brooklyn.entity.nosql.mongodb;
 
-import java.net.UnknownHostException;
 import java.util.List;
 import java.util.Map;
 
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentEc2LiveTest.java
index afe80f9..86a01cb 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentEc2LiveTest.java
@@ -69,6 +69,7 @@
         Entities.dumpInfo(app);
 
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Runnable() {
+            @Override
             public void run() {
                 Assert.assertEquals(deployment.getRouterCluster().getCurrentSize(), ROUTER_CLUSTER_SIZE);
                 Assert.assertEquals(deployment.getShardCluster().getCurrentSize(), SHARD_CLUSTER_SIZE);
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java
index 8d11e4d..9abad4a 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java
@@ -44,6 +44,7 @@
     
     private LocalhostMachineProvisioningLocation localhostProvisioningLocation;
 
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java
index 6ad4925..2a2038b 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java
@@ -28,6 +28,7 @@
 
 public class RiakNodeSoftlayerLiveTest extends AbstractSoftlayerLiveTest {
 
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
diff --git a/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainer.java b/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainer.java
index 0d2d522..07d255f 100644
--- a/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainer.java
+++ b/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainer.java
@@ -31,7 +31,6 @@
 import org.apache.brooklyn.core.config.MapConfigKey;
 import org.apache.brooklyn.core.effector.MethodEffector;
 import org.apache.brooklyn.core.sensor.AttributeSensorAndConfigKey;
-import org.apache.brooklyn.core.sensor.BasicAttributeSensorAndConfigKey;
 import org.apache.brooklyn.core.sensor.PortAttributeSensorAndConfigKey;
 import org.apache.brooklyn.core.sensor.Sensors;
 import org.apache.brooklyn.entity.java.UsesJava;
diff --git a/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainerImpl.java b/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainerImpl.java
index 92e5b2f..1cf4a24 100644
--- a/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainerImpl.java
+++ b/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainerImpl.java
@@ -176,6 +176,7 @@
         if (jmxHelper != null) jmxHelper.terminate();
     }
 
+    @Override
     @Effector(description="Updates the OSGi Service's properties, adding (and overriding) the given key-value pairs")
     public void updateServiceProperties(
             @EffectorParam(name="serviceName", description="Name of the OSGi service") String serviceName, 
@@ -202,6 +203,7 @@
         jmxHelper.operation(OSGI_COMPENDIUM, "update", serviceName, table);
     }
     
+    @Override
     @Effector(description="Updates the OSGi Service's properties, adding (and overriding) the given key-value pairs")
     public void installFeature(
             @EffectorParam(name="featureName", description="Name of the feature - see org.apache.karaf:type=features#installFeature()") final String featureName) throws Exception {
@@ -212,6 +214,7 @@
                 .limitIterationsTo(40)
                 .every(500, TimeUnit.MILLISECONDS)
                 .until(new Callable<Boolean>() {
+                        @Override
                         public Boolean call() {
                             jmxHelper.operation(String.format(KARAF_FEATURES, getConfig(KARAF_NAME.getConfigKey())), "installFeature", featureName);
                             return true;
@@ -220,6 +223,7 @@
                 .run();
     }
 
+    @Override
     public Map<Long,Map<String,?>> listBundles() {
         TabularData table = (TabularData) jmxHelper.operation(OSGI_BUNDLE_STATE, "listBundles");
         Map<List<?>, Map<String, Object>> map = JmxValueFunctions.tabularDataToMapOfMaps(table);
@@ -234,6 +238,7 @@
     /**
      * throws URISyntaxException If bundle name is not a valid URI
      */
+    @Override
     @Effector(description="Deploys the given bundle, returning the bundle id - see osgi.core:type=framework#installBundle()")
     public long installBundle(
             @EffectorParam(name="bundle", description="URI of bundle to be deployed") String bundle) throws URISyntaxException {
@@ -261,6 +266,7 @@
         }
     }
 
+    @Override
     @Effector(description="Undeploys the bundle with the given id")
     public void uninstallBundle(
             @EffectorParam(name="bundleId", description="Id of the bundle") Long bundleId) {
diff --git a/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafSshDriver.java b/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafSshDriver.java
index 1662e87..6ec48e2 100644
--- a/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafSshDriver.java
+++ b/software/osgi/src/main/java/org/apache/brooklyn/entity/osgi/karaf/KarafSshDriver.java
@@ -24,7 +24,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.entity.java.JavaSoftwareProcessSshDriver;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.util.collections.MutableList;
diff --git a/software/osgi/src/test/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainerTest.java b/software/osgi/src/test/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainerTest.java
index 9d60834..af32825 100644
--- a/software/osgi/src/test/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainerTest.java
+++ b/software/osgi/src/test/java/org/apache/brooklyn/entity/osgi/karaf/KarafContainerTest.java
@@ -49,6 +49,7 @@
     LocalhostMachineProvisioningLocation localhost;
     KarafContainer karaf;
 
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
@@ -74,6 +75,7 @@
         EntityAsserts.assertAttributeEqualsEventually(karaf, Attributes.SERVICE_UP, false);
         
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 try {
                     Assert.assertFalse(Entities.submit(app, SshEffectorTasks.isPidRunning(pid).machine(localhost.obtain())).get());
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/AbstractGeoDnsServiceImpl.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/AbstractGeoDnsServiceImpl.java
index 843673f..0f96c87 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/AbstractGeoDnsServiceImpl.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/AbstractGeoDnsServiceImpl.java
@@ -197,7 +197,7 @@
                 return;
             if (targetEntityProvider instanceof DynamicGroup)
                 ((DynamicGroup) targetEntityProvider).rescanEntities();
-            Set<Entity> pool = MutableSet.copyOf(targetEntityProvider instanceof Group ? ((Group)targetEntityProvider).getMembers(): targetEntityProvider.getChildren());
+            Set<Entity> pool = MutableSet.copyOf(targetEntityProvider instanceof Group ? targetEntityProvider.getMembers(): targetEntityProvider.getChildren());
             if (log.isDebugEnabled()) log.debug("GeoDns {} refreshing targets, pool now {}", this, pool);
 
             boolean changed = false;
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingDnsServiceImpl.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingDnsServiceImpl.java
index 47f684f..34cdfb2 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingDnsServiceImpl.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingDnsServiceImpl.java
@@ -131,6 +131,7 @@
     }
     
     /** minimum/default TTL here is 300s = 5m */
+    @Override
     public long getTimeToLiveSeconds() { return 5*60; }
     
     @Override
@@ -155,6 +156,7 @@
         isConfigured = false;
     }
     
+    @Override
     protected void reconfigureService(Collection<HostGeoInfo> targetHosts) {
         if (!isConfigured) {
             this.rememberedTargetHosts = MutableSet.copyOf(targetHosts);
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxController.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxController.java
index 939deac..a724a98 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxController.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxController.java
@@ -32,7 +32,6 @@
 import org.apache.brooklyn.core.config.ConfigKeys;
 import org.apache.brooklyn.core.effector.MethodEffector;
 import org.apache.brooklyn.core.sensor.AttributeSensorAndConfigKey;
-import org.apache.brooklyn.core.sensor.BasicAttributeSensorAndConfigKey;
 import org.apache.brooklyn.core.sensor.Sensors;
 import org.apache.brooklyn.entity.proxy.AbstractController;
 import org.apache.brooklyn.entity.proxy.ProxySslConfig;
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxControllerImpl.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxControllerImpl.java
index 94b9732..7756909 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxControllerImpl.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxControllerImpl.java
@@ -213,6 +213,7 @@
         return (NginxDriver) super.getDriver();
     }
 
+    @Override
     public void doExtraConfigurationDuringStart() {
         computePortsAndUrls();
         reconfigureService();
@@ -323,6 +324,7 @@
         return "Nginx";
     }
 
+    @Override
     public boolean appendSslConfig(String id,
             StringBuilder out,
             String prefix,
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxSshDriver.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxSshDriver.java
index f308aa8..b978bb0 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxSshDriver.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/NginxSshDriver.java
@@ -28,7 +28,6 @@
 import org.apache.brooklyn.api.location.OsDetails;
 import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.entity.EntityInternal;
 import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
 import org.apache.brooklyn.entity.proxy.AbstractController;
@@ -44,7 +43,6 @@
 import org.apache.brooklyn.util.core.task.ssh.SshTasks.OnFailingTask;
 import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.net.Networking;
-import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.ssh.BashCommands;
 import org.apache.brooklyn.util.stream.Streams;
 import org.apache.brooklyn.util.text.Strings;
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/UrlMappingImpl.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/UrlMappingImpl.java
index c8f2afe..d8db037 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/UrlMappingImpl.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/nginx/UrlMappingImpl.java
@@ -166,10 +166,12 @@
         }
     }
 
+    @Override
     public Collection<String> getTargetAddresses() {
         return getAttribute(TARGET_ADDRESSES);
     }
 
+    @Override
     public ProxySslConfig getSsl() {
         return getConfig(SSL_CONFIG);
     }
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
index 4fbf1be..a6ad558 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
@@ -32,7 +32,6 @@
 import org.apache.brooklyn.core.effector.Effectors;
 import org.apache.brooklyn.core.entity.Attributes;
 import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.EntityInternal;
 import org.apache.brooklyn.enricher.stock.Enrichers;
 import org.apache.brooklyn.entity.group.DynamicCluster;
 import org.apache.brooklyn.entity.group.DynamicClusterImpl;
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/JavaWebAppSoftwareProcessImpl.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/JavaWebAppSoftwareProcessImpl.java
index 7099276..646da0c 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/JavaWebAppSoftwareProcessImpl.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/JavaWebAppSoftwareProcessImpl.java
@@ -69,6 +69,7 @@
     }
     
     //just provide better typing
+    @Override
     public JavaWebAppDriver getDriver() {
         return (JavaWebAppDriver) super.getDriver();
     }
@@ -118,6 +119,7 @@
      * @param url  where to get the war, as a URL, either classpath://xxx or file:///home/xxx or http(s)...
      * @param targetName  where to tell the server to serve the WAR, see above
      */
+    @Override
     @Effector(description="Deploys the given artifact, from a source URL, to a given deployment filename/context")
     public void deploy(
             @EffectorParam(name="url", description="URL of WAR file") String url, 
@@ -176,27 +178,33 @@
         sensors().set(REQUESTS_PER_SECOND_IN_WINDOW, 0D);
     }
 
+    @Override
     public boolean isHttpEnabled() {
         return WebAppServiceMethods.isProtocolEnabled(this, "HTTP");
     }
 
+    @Override
     public boolean isHttpsEnabled() {
         return WebAppServiceMethods.isProtocolEnabled(this, "HTTPS");
     }
 
+    @Override
     public Integer getHttpPort() {
         return getAttribute(HTTP_PORT);
     }
 
+    @Override
     public Integer getHttpsPort() {
         return getAttribute(HTTPS_PORT);
     }
 
+    @Override
     public String getHttpsSslKeyAlias() {
         HttpsSslConfig config = getAttribute(HTTPS_SSL_CONFIG);
         return (config == null) ? null : config.getKeyAlias();
     }
 
+    @Override
     public String getHttpsSslKeystorePassword() {
         HttpsSslConfig config = getAttribute(HTTPS_SSL_CONFIG);
         return (config == null) ? "" : config.getKeystorePassword();
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/JavaWebAppSshDriver.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/JavaWebAppSshDriver.java
index b2b8620..615d4d2 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/JavaWebAppSshDriver.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/JavaWebAppSshDriver.java
@@ -18,15 +18,11 @@
  */
 package org.apache.brooklyn.entity.webapp;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 import java.io.File;
 import java.net.URI;
 import java.util.Set;
 
-import com.google.common.net.HostAndPort;
 import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.location.access.BrooklynAccessUtils;
 import org.apache.brooklyn.entity.java.JavaSoftwareProcessSshDriver;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.util.core.task.DynamicTasks;
@@ -42,6 +38,7 @@
         super(entity, machine);
     }
 
+    @Override
     public JavaWebAppSoftwareProcessImpl getEntity() {
         return (JavaWebAppSoftwareProcessImpl) super.getEntity();
     }
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6SshDriver.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6SshDriver.java
index 769337a..70d6a14 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6SshDriver.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6SshDriver.java
@@ -53,10 +53,12 @@
         return (JBoss6ServerImpl) super.getEntity();
     }
     
+    @Override
     protected String getLogFileLocation() {
         return Os.mergePathsUnix(getRunDir(), "server", SERVER_TYPE, "log/server.log");
     }
 
+    @Override
     protected String getDeploySubdir() {
         return Os.mergePathsUnix("server", SERVER_TYPE, "deploy");
     } // FIXME what is this in as6?
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/nodejs/NodeJsWebAppSshDriver.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/nodejs/NodeJsWebAppSshDriver.java
index b632e71..4963038 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/nodejs/NodeJsWebAppSshDriver.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/nodejs/NodeJsWebAppSshDriver.java
@@ -51,6 +51,7 @@
         super(entity, machine);
     }
 
+    @Override
     public NodeJsWebAppServiceImpl getEntity() {
         return (NodeJsWebAppServiceImpl) super.getEntity();
     }
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerImpl.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerImpl.java
index 6302278..1708a05 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerImpl.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerImpl.java
@@ -22,9 +22,6 @@
 
 import java.util.concurrent.TimeUnit;
 
-import javax.annotation.Nullable;
-
-import org.apache.brooklyn.api.sensor.AttributeSensor;
 import org.apache.brooklyn.core.entity.EntityFunctions;
 import org.apache.brooklyn.entity.java.JavaAppUtils;
 import org.apache.brooklyn.entity.webapp.JavaWebAppSoftwareProcessImpl;
@@ -33,7 +30,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.base.Predicates;
 
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingWebClientTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingWebClientTest.java
index 325cd81..f81b5c7 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingWebClientTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingWebClientTest.java
@@ -139,6 +139,7 @@
         super.setUp();
     }
     
+    @Override
     @AfterMethod(alwaysRun=true)
     public void tearDown() throws Exception {
         if (smartSubdomain != null)
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/AbstractControllerTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/AbstractControllerTest.java
index 94221c4..ea4b4d8 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/AbstractControllerTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/AbstractControllerTest.java
@@ -406,7 +406,7 @@
             sensors().set(Attributes.MAIN_URI_MAPPED_SUBNET, URI.create(machine.getAddress().getHostName()));
             sensors().set(Attributes.MAIN_URI_MAPPED_PUBLIC, URI.create("http://8.8.8.8:" + sensors().get(HTTP_PORT)));
         }
-        
+
         @Override
         public void stop() {
             Maybe<MachineLocation> machine = Machines.findUniqueMachineLocation(getLocations(), MachineLocation.class);
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/UrlMappingTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/UrlMappingTest.java
index 65a6b4e..d450f71 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/UrlMappingTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/UrlMappingTest.java
@@ -188,6 +188,7 @@
     
     private void assertExpectedTargetsEventually(final Iterable<? extends Entity> members) {
         Asserts.succeedsEventually(MutableMap.of("timeout", Duration.ONE_MINUTE), new Runnable() {
+            @Override
             public void run() {
                 Iterable<String> expectedTargets = Iterables.transform(members, new Function<Entity,String>() {
                         @Override public String apply(@Nullable Entity input) {
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxClusterIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxClusterIntegrationTest.java
index 5ba0afd..913c0cd 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxClusterIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxClusterIntegrationTest.java
@@ -195,7 +195,7 @@
     @SuppressWarnings({ "rawtypes", "unchecked" })
     private List<NginxController> findNginxs() {
         ImmutableList result = ImmutableList.copyOf(Iterables.filter(app.getManagementContext().getEntityManager().getEntities(), Predicates.instanceOf(NginxController.class)));
-        return (List<NginxController>) result;
+        return result;
     }
 
     private List<String> findNginxRootUrls() {
@@ -212,6 +212,7 @@
 
     private void assertNginxsResponsiveEvenutally(final Iterable<NginxController> nginxs, final String hostname, final List<String> pathsFor200) {
         Asserts.succeedsEventually(MutableMap.of("timeout", TIMEOUT_MS), new Runnable() {
+            @Override
             public void run() {
                 for (NginxController nginx : nginxs) {
                     assertTrue(nginx.getAttribute(NginxController.SERVICE_UP));
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxHttpsSslIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxHttpsSslIntegrationTest.java
index 7efea02..d94c1b2 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxHttpsSslIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxHttpsSslIntegrationTest.java
@@ -115,6 +115,7 @@
         if (!url.startsWith("https://")) Assert.fail("URL should be https: "+url);
         
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 // Services are running
                 assertTrue(cluster.getAttribute(SoftwareProcess.SERVICE_UP));
@@ -172,6 +173,7 @@
         if (!url.startsWith("https://")) Assert.fail("URL should be https: "+url);
 
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 // Services are running
                 assertTrue(cluster.getAttribute(SoftwareProcess.SERVICE_UP));
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxIntegrationTest.java
index c533b8d..4598b02 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxIntegrationTest.java
@@ -128,6 +128,7 @@
         
         // App-servers and nginx has started
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 for (Entity member : serverPool.getMembers()) {
                     assertTrue(member.getAttribute(SoftwareProcess.SERVICE_UP));
@@ -171,6 +172,7 @@
 
         // App-servers and nginx has started
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 for (Entity member : serverPool.getMembers()) {
                     assertTrue(member.getAttribute(SoftwareProcess.SERVICE_UP));
@@ -283,6 +285,7 @@
         app.start(ImmutableList.of(localLoc));
 
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 for (Entity member : serverPool.getMembers()) {
                     assertHttpStatusCodeEquals(member.getAttribute(WebAppService.ROOT_URL), 200);
@@ -345,6 +348,7 @@
         final String nginxUrl = nginx.getAttribute(WebAppService.ROOT_URL);
 
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 for (Entity member : serverPool.getMembers()) {
                     String jbossUrl = member.getAttribute(WebAppService.ROOT_URL);
@@ -356,6 +360,7 @@
         final String jbossUrl = Iterables.get(serverPool.getMembers(), 0).getAttribute(WebAppService.ROOT_URL);
         
         Thread t = new Thread(new Runnable() {
+            @Override
             public void run() {
                 long lastReportTime = System.currentTimeMillis();
                 int num = 0;
@@ -378,6 +383,7 @@
         t.start();
         
         Thread t2 = new Thread(new Runnable() {
+            @Override
             public void run() {
                 long lastReportTime = System.currentTimeMillis();
                 int num = 0;
@@ -416,6 +422,7 @@
         
         // App-servers and nginx has started
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 assertTrue(nginx.getAttribute(SoftwareProcess.SERVICE_UP));
             }});
@@ -427,6 +434,7 @@
 
         Time.sleep(Duration.ONE_SECOND);
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 assertTrue(nginx.getAttribute(SoftwareProcess.SERVICE_UP));
             }});
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindIntegrationTest.java
index f3b3019..761e261 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindIntegrationTest.java
@@ -78,6 +78,7 @@
         return true;
     }
     
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
@@ -90,6 +91,7 @@
         return "classpath://hello-world.war";
     }
 
+    @Override
     @AfterMethod(alwaysRun=true)
     public void tearDown() throws Exception {
         for (WebAppMonitor monitor : webAppMonitors) {
@@ -226,6 +228,7 @@
 
         // Expect continually to have same nginx members; should not lose them temporarily!
         Asserts.succeedsContinually(new Runnable() {
+            @Override
             public void run() {
                 Map<Entity, String> newNginxMemebers = newNginx.getAttribute(NginxController.SERVER_POOL_TARGETS);
                 assertEquals(newNginxMemebers.keySet(), ImmutableSet.of(newServer));
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
index 3e11c27..cc59721 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
@@ -87,6 +87,7 @@
         return "classpath://hello-world.war";
     }
 
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
@@ -99,6 +100,7 @@
         BrooklynFeatureEnablement.setEnablement(BrooklynFeatureEnablement.FEATURE_FEED_REGISTRATION_PROPERTY, true);
     }
 
+    @Override
     @AfterMethod(alwaysRun=true)
     public void tearDown() throws Exception {
         try {
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxUrlMappingIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxUrlMappingIntegrationTest.java
index 9f40dd0..9b325f4 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxUrlMappingIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxUrlMappingIntegrationTest.java
@@ -157,6 +157,7 @@
         // Confirm routes requests to the correct cluster
         // Do more than one request for each in-case just lucky with round-robin...
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 //cluster 0
                 for (int i = 0; i < 2; i++) {
@@ -230,6 +231,7 @@
         // Confirm routes requests to the correct cluster
         // Do more than one request for each in-case just lucky with round-robin...
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 for (int i = 0; i < 2; i++) {
                     HttpTestUtils.assertContentContainsText("http://localhost:"+port+"/atC0", "Hello");
@@ -301,6 +303,7 @@
         
         // check nginx forwards localhost1 to c1, and localhost to core group 
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 HttpTestUtils.assertContentContainsText("http://localhost1:"+port+"/hello-world", "Hello");
                 HttpTestUtils.assertHttpStatusCodeEquals("http://localhost1:"+port+"", 404);
@@ -333,6 +336,7 @@
         
         // Confirm routes requests to the correct cluster
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 // health check
                 HttpTestUtils.assertContentContainsText("http://localhost1:"+port+"", "Hello");
@@ -382,6 +386,7 @@
         
         // Wait for app-server to be responsive, and url-mapping to update its TARGET_ADDRESSES (through async subscription)
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 // Entities.dumpInfo(app);
                 assertEquals(u1.getAttribute(UrlMapping.TARGET_ADDRESSES).size(), 1);
@@ -401,6 +406,7 @@
         // Also wait for TARGET_ADDRESSES to update
         assertAppServerRespondsEventually(c1jboss2);
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 assertEquals(u1.getAttribute(UrlMapping.TARGET_ADDRESSES).size(), 2);
             }});
@@ -410,6 +416,7 @@
         //      This assertion isn't good enough to tell if it's been deployed.
         final String c1jboss2addr = c1jboss2.getAttribute(Attributes.HOSTNAME)+":"+c1jboss2.getAttribute(Attributes.HTTP_PORT);
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 String conf = nginx.getConfigFile();
                 assertTrue(conf.contains(c1jboss2addr), "could not find "+c1jboss2addr+" in:\n"+conf);
@@ -452,6 +459,7 @@
         // Confirm routes requests to the correct cluster
         // Do more than one request for each in-case just lucky with round-robin...
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 for (int i = 0; i < 2; i++) {
                     HttpTestUtils.assertContentContainsText("http://localhost:"+port+"/atC0/", "Hello");
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxWebClusterEc2LiveTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxWebClusterEc2LiveTest.java
index f950ca4..b70f290 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxWebClusterEc2LiveTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxWebClusterEc2LiveTest.java
@@ -98,6 +98,7 @@
         app.start(ImmutableList.of(loc));
         
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 // Nginx URL is available
                 MachineLocation machine = Machines.findUniqueMachineLocation(nginx.getLocations()).get();
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/AbstractWebAppFixtureIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/AbstractWebAppFixtureIntegrationTest.java
index a6c9b2f..a488eb9 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/AbstractWebAppFixtureIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/AbstractWebAppFixtureIntegrationTest.java
@@ -258,6 +258,7 @@
         }
         
         Asserts.succeedsEventually(MutableMap.of("timeout", 20*1000), new Runnable() {
+            @Override
             public void run() {
                 Integer requestCount = entity.getAttribute(WebAppService.REQUEST_COUNT);
                 Integer errorCount = entity.getAttribute(WebAppService.ERROR_COUNT);
@@ -289,6 +290,7 @@
             // reqs/sec initially zero
             log.info("Waiting for initial avg-requests to be zero...");
             Asserts.succeedsEventually(MutableMap.of("timeout", 20*1000), new Runnable() {
+                @Override
                 public void run() {
                     Double activityValue = entity.getAttribute(WebAppService.REQUESTS_PER_SECOND_IN_WINDOW);
                     assertNotNull(activityValue, "activity not set yet "+activityValue+")");
@@ -297,6 +299,7 @@
             
             // apply workload on 1 per sec; reqs/sec should update
             Asserts.succeedsEventually(MutableMap.of("timeout", 30*1000), new Callable<Void>() {
+                @Override
                 public Void call() throws Exception {
                     String url = entity.getAttribute(WebAppService.ROOT_URL) + "does_not_exist";
                     final int desiredMsgsPerSec = 10;
@@ -315,12 +318,13 @@
                     }
     
                     Asserts.succeedsEventually(MutableMap.of("timeout", 4000), new Runnable() {
+                        @Override
                         public void run() {
                             Double avgReqs = entity.getAttribute(WebAppService.REQUESTS_PER_SECOND_IN_WINDOW);
                             Integer requestCount = entity.getAttribute(WebAppService.REQUEST_COUNT);
                             
                             log.info("avg-requests="+avgReqs+"; total-requests="+requestCount);
-                            assertEquals(avgReqs.doubleValue(), (double)desiredMsgsPerSec, 3.0d);
+                            assertEquals(avgReqs.doubleValue(), desiredMsgsPerSec, 3.0d);
                             assertEquals(requestCount.intValue(), preRequestCount+reqsSent.get());
                         }});
                     
@@ -332,6 +336,7 @@
             Thread.sleep(WebAppServiceMethods.DEFAULT_WINDOW_DURATION.toMilliseconds());
             
             Asserts.succeedsEventually(MutableMap.of("timeout", 10*1000), new Runnable() {
+                @Override
                 public void run() {
                     Double avgReqs = entity.getAttribute(WebAppService.REQUESTS_PER_SECOND_IN_WINDOW);
                     assertNotNull(avgReqs);
@@ -478,6 +483,7 @@
         
         //tomcat may need a while to unpack everything
         Asserts.succeedsEventually(MutableMap.of("timeout", 60*1000), new Runnable() {
+            @Override
             public void run() {
                 // TODO get this URL from a WAR file entity
                 HttpTestUtils.assertHttpStatusCodeEquals(Urls.mergePaths(entity.getAttribute(WebAppService.ROOT_URL), urlSubPathToPageToQuery), 200);
@@ -499,6 +505,7 @@
         Entities.start(entity.getApplication(), ImmutableList.of(loc));
 
         Asserts.succeedsEventually(MutableMap.of("timeout", 60*1000), new Runnable() {
+            @Override
             public void run() {
                 // TODO get this URL from a WAR file entity
                 HttpTestUtils.assertHttpStatusCodeEquals(Urls.mergePaths(entity.getAttribute(WebAppService.ROOT_URL), urlSubPathToWebApp, urlSubPathToPageToQuery), 200);
@@ -519,6 +526,7 @@
         // Test deploying
         entity.deploy(resource.toString(), "myartifactname.war");
         Asserts.succeedsEventually(MutableMap.of("timeout", 60*1000), new Runnable() {
+            @Override
             public void run() {
                 // TODO get this URL from a WAR file entity
                 HttpTestUtils.assertHttpStatusCodeEquals(Urls.mergePaths(entity.getAttribute(WebAppService.ROOT_URL), "myartifactname/", urlSubPathToPageToQuery), 200);
@@ -528,6 +536,7 @@
         // And undeploying
         entity.undeploy("/myartifactname");
         Asserts.succeedsEventually(MutableMap.of("timeout", 60*1000), new Runnable() {
+            @Override
             public void run() {
                 // TODO get this URL from a WAR file entity
                 HttpTestUtils.assertHttpStatusCodeEquals(Urls.mergePaths(entity.getAttribute(WebAppService.ROOT_URL), "myartifactname", urlSubPathToPageToQuery), 404);
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/ControlledDynamicWebAppClusterIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/ControlledDynamicWebAppClusterIntegrationTest.java
index bb3ef02..bf514ac 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/ControlledDynamicWebAppClusterIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/ControlledDynamicWebAppClusterIntegrationTest.java
@@ -59,6 +59,7 @@
     private LocalhostMachineProvisioningLocation loc;
     private List<LocalhostMachineProvisioningLocation> locs;
     
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/ControlledDynamicWebAppClusterTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/ControlledDynamicWebAppClusterTest.java
index daa53fd..ced06bb 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/ControlledDynamicWebAppClusterTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/ControlledDynamicWebAppClusterTest.java
@@ -55,6 +55,7 @@
     private LocalhostMachineProvisioningLocation loc;
     private List<LocalhostMachineProvisioningLocation> locs;
     
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/EffectorExceptionLoggedTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/EffectorExceptionLoggedTest.java
index ba41ce7..d059920 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/EffectorExceptionLoggedTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/EffectorExceptionLoggedTest.java
@@ -68,12 +68,14 @@
         }
     }
 
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
         loc = app.newLocalhostProvisioningLocation();
     }
 
+    @Override
     protected BrooklynProperties getBrooklynProperties() {
         BrooklynProperties result = BrooklynProperties.Factory.newEmpty();
         result.put(Entitlements.GLOBAL_ENTITLEMENT_MANAGER, ThrowingEntitlementManager.class.getName());
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6ServerNonInheritingIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6ServerNonInheritingIntegrationTest.java
index 6201653..786c09c 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6ServerNonInheritingIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6ServerNonInheritingIntegrationTest.java
@@ -18,7 +18,6 @@
  */
 package org.apache.brooklyn.entity.webapp.jboss;
 
-import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
@@ -49,6 +48,7 @@
 
     private LocalhostMachineProvisioningLocation localhostProvisioningLocation;
     
+    @Override
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
         super.setUp();
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7ServerDockerLiveTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7ServerDockerLiveTest.java
index 65bcc7f..e0a7aa1 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7ServerDockerLiveTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7ServerDockerLiveTest.java
@@ -29,7 +29,6 @@
 
 import org.testng.annotations.Test;
 
-import static com.google.common.base.Preconditions.checkNotNull;
 import static org.testng.Assert.assertNotNull;
 
 /**
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7ServerNonInheritingIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7ServerNonInheritingIntegrationTest.java
index 0e134b3..87eb5e5 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7ServerNonInheritingIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7ServerNonInheritingIntegrationTest.java
@@ -86,6 +86,7 @@
         HttpTestUtils.assertUrlUnreachable(httpsUrl);
 
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 assertNotNull(server.getAttribute(JBoss7Server.REQUEST_COUNT));
                 assertNotNull(server.getAttribute(JBoss7Server.ERROR_COUNT));
@@ -159,6 +160,7 @@
         //HttpTestUtils.assertContentContainsText(httpsUrl, "Hello");
         
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 assertNotNull(server.getAttribute(JBoss7Server.REQUEST_COUNT));
                 assertNotNull(server.getAttribute(JBoss7Server.ERROR_COUNT));
@@ -178,6 +180,7 @@
         app.start(ImmutableList.of(localhostProvisioningLocation));
 
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 assertNotNull(serverA.getAttribute(JBoss7Server.BYTES_SENT));
                 assertNotNull(serverB.getAttribute(JBoss7Server.BYTES_SENT));
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBossServersMultiVersionWebAppFixtureIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBossServersMultiVersionWebAppFixtureIntegrationTest.java
index f6fd0bc..cfe5a54 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBossServersMultiVersionWebAppFixtureIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/JBossServersMultiVersionWebAppFixtureIntegrationTest.java
@@ -29,11 +29,13 @@
 
 public class JBossServersMultiVersionWebAppFixtureIntegrationTest extends AbstractWebAppFixtureIntegrationTest {
 
+    @Override
     @Test(groups = "Integration", dataProvider = "basicEntities")
     public void testReportsServiceDownWhenKilled(final SoftwareProcess entity) throws Exception {
         super.testReportsServiceDownWhenKilled(entity);
     }
     
+    @Override
     @DataProvider(name = "basicEntities")
     public Object[][] basicEntities() {
         TestApplication jboss6App = newTestApplication();
@@ -52,6 +54,7 @@
     }
 
     // to be able to test on this class in Eclipse IDE
+    @Override
     @Test(groups = "Integration", dataProvider = "basicEntities")
     public void canStartAndStop(final SoftwareProcess entity) {
         super.canStartAndStop(entity);
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/Jboss7ServerGoogleComputeLiveTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/Jboss7ServerGoogleComputeLiveTest.java
index 1485e92..55ada4f 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/Jboss7ServerGoogleComputeLiveTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jboss/Jboss7ServerGoogleComputeLiveTest.java
@@ -18,7 +18,6 @@
  */
 package org.apache.brooklyn.entity.webapp.jboss;
 
-import static com.google.common.base.Preconditions.checkNotNull;
 import static org.testng.Assert.assertNotNull;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jetty/JettyWebAppFixtureIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jetty/JettyWebAppFixtureIntegrationTest.java
index 38b242b..d4c2301 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jetty/JettyWebAppFixtureIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/jetty/JettyWebAppFixtureIntegrationTest.java
@@ -32,11 +32,13 @@
     // FIXME Fails with this is in the jetty log:
     //     Caused by: java.lang.ClassNotFoundException: mx4j.tools.adaptor.http.HttpAdaptor
 
+    @Override
     @Test(groups = "Integration", dataProvider = "basicEntities")
     public void canStartAndStop(final SoftwareProcess entity) {
         super.canStartAndStop(entity);
     }
     
+    @Override
     @DataProvider(name = "basicEntities")
     public Object[][] basicEntities() {
         TestApplication jettyApp = newTestApplication();
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/nodejs/NodeJsWebAppFixtureIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/nodejs/NodeJsWebAppFixtureIntegrationTest.java
index 96d86d7..31816d1 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/nodejs/NodeJsWebAppFixtureIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/nodejs/NodeJsWebAppFixtureIntegrationTest.java
@@ -117,6 +117,7 @@
 
         Entities.start(entity.getApplication(), ImmutableList.of(loc));
         Asserts.succeedsEventually(MutableMap.of("timeout", 120*1000), new Runnable() {
+            @Override
             public void run() {
                 assertTrue(entity.getAttribute(Startable.SERVICE_UP));
             }});
@@ -164,6 +165,7 @@
         Entities.start(entity.getApplication(), ImmutableList.of(loc));
 
         Asserts.succeedsEventually(MutableMap.of("timeout", Duration.minutes(1)), new Runnable() {
+            @Override
             public void run() {
                 // TODO get this URL from a web-app entity of some kind?
                 String url = Urls.mergePaths(entity.getAttribute(WebAppService.ROOT_URL), urlSubPathToWebApp, urlSubPathToPageToQuery);
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/Tomcat8ServerWebAppFixtureIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/Tomcat8ServerWebAppFixtureIntegrationTest.java
index 7ef8d19..bcfe11e 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/Tomcat8ServerWebAppFixtureIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/Tomcat8ServerWebAppFixtureIntegrationTest.java
@@ -52,6 +52,7 @@
     @SuppressWarnings("unused")
     private static final Logger log = LoggerFactory.getLogger(Tomcat8ServerWebAppFixtureIntegrationTest.class);
     
+    @Override
     @DataProvider(name = "basicEntities")
     public Object[][] basicEntities() {
         TestApplication tomcatApp = newTestApplication();
@@ -80,10 +81,12 @@
     }
 
     // exists to be able to test on this class from GUI in Eclipse IDE
+    @Override
     @Test(groups = "Integration", dataProvider = "basicEntities")
     public void canStartAndStop(final SoftwareProcess entity) {
         super.canStartAndStop(entity);
     }
+    @Override
     @Test(groups = "Integration", dataProvider = "basicEntities")
     public void testReportsServiceDownWhenKilled(final SoftwareProcess entity) throws Exception {
         super.testReportsServiceDownWhenKilled(entity);
@@ -129,6 +132,7 @@
         if (shutdownPort != null) {
             boolean socketClosed = Repeater.create("Checking WebApp has shut down")
                     .repeat(new Callable<Void>() {
+                            @Override
                             public Void call() throws Exception {
                                 if (shutdownSocket.get() != null) shutdownSocket.get().close();
                                 try {
@@ -141,6 +145,7 @@
                             }})
                     .every(100, TimeUnit.MILLISECONDS)
                     .until(new Callable<Boolean>() {
+                            @Override
                             public Boolean call() {
                                 return (gotException.get() != null);
                             }})
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerDisableRetrieveUsageMetricsIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerDisableRetrieveUsageMetricsIntegrationTest.java
index 457378a..393b263 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerDisableRetrieveUsageMetricsIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerDisableRetrieveUsageMetricsIntegrationTest.java
@@ -48,6 +48,7 @@
 
         // tc2 uses defaults, so will include usage metrics
         Asserts.succeedsEventually(new Runnable() {
+            @Override
             public void run() {
                 assertNotNull(tc2.getAttribute(TomcatServer.CONNECTOR_STATUS));
                 assertNotNull(tc2.getAttribute(TomcatServer.ERROR_COUNT));
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerSoftlayerLiveTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerSoftlayerLiveTest.java
index 4bb167b..6b822d7 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerSoftlayerLiveTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerSoftlayerLiveTest.java
@@ -18,7 +18,6 @@
  */
 package org.apache.brooklyn.entity.webapp.tomcat;
 
-import static com.google.common.base.Preconditions.checkNotNull;
 import static org.testng.Assert.assertNotNull;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerWebAppFixtureIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerWebAppFixtureIntegrationTest.java
index e824e26..ac8e1e8 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerWebAppFixtureIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatServerWebAppFixtureIntegrationTest.java
@@ -52,6 +52,7 @@
     @SuppressWarnings("unused")
     private static final Logger log = LoggerFactory.getLogger(TomcatServerWebAppFixtureIntegrationTest.class);
     
+    @Override
     @DataProvider(name = "basicEntities")
     public Object[][] basicEntities() {
         TestApplication tomcatApp = newTestApplication();
@@ -80,11 +81,13 @@
     }
 
     // exists to be able to test on this class from GUI in Eclipse IDE
+    @Override
     @Test(groups = "Integration", dataProvider = "basicEntities")
     public void canStartAndStop(final SoftwareProcess entity) {
         super.canStartAndStop(entity);
     }
 
+    @Override
     @Test(groups = "Integration", dataProvider = "basicEntities")
     public void testReportsServiceDownWhenKilled(final SoftwareProcess entity) throws Exception {
         super.testReportsServiceDownWhenKilled(entity);
@@ -116,6 +119,7 @@
         if (shutdownPort != null) {
             boolean socketClosed = Repeater.create("Checking WebApp has shut down")
                     .repeat(new Callable<Void>() {
+                            @Override
                             public Void call() throws Exception {
                                 if (shutdownSocket.get() != null) shutdownSocket.get().close();
                                 try {
@@ -128,6 +132,7 @@
                             }})
                     .every(100, TimeUnit.MILLISECONDS)
                     .until(new Callable<Boolean>() {
+                            @Override
                             public Boolean call() {
                                 return (gotException.get() != null);
                             }})