diff --git a/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefAttributeFeed.java b/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefAttributeFeed.java
index f6d2615..91c9b09 100644
--- a/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefAttributeFeed.java
+++ b/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefAttributeFeed.java
@@ -194,8 +194,8 @@
     }
     
     protected ChefAttributeFeed(Builder builder) {
-        setConfig(ONLY_IF_SERVICE_UP, builder.onlyIfServiceUp);
-        setConfig(NODE_NAME, checkNotNull(builder.nodeName, "builder.nodeName"));
+        config().set(ONLY_IF_SERVICE_UP, builder.onlyIfServiceUp);
+        config().set(NODE_NAME, checkNotNull(builder.nodeName, "builder.nodeName"));
 
         Set<ChefAttributePollConfig<?>> polls = Sets.newLinkedHashSet();
         for (ChefAttributePollConfig<?> config : builder.polls) {
@@ -205,7 +205,7 @@
             if (configCopy.getPeriod() < 0) configCopy.period(builder.period);
             polls.add(configCopy);
         }
-        setConfig(POLLS, polls);
+        config().set(POLLS, polls);
         initUniqueTag(builder.uniqueTag, polls);
     }
 
diff --git a/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefLifecycleEffectorTasks.java b/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefLifecycleEffectorTasks.java
index 8c3dad9..a142de4 100644
--- a/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefLifecycleEffectorTasks.java
+++ b/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefLifecycleEffectorTasks.java
@@ -20,7 +20,6 @@
 
 import java.util.Collection;
 import java.util.Map;
-import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.location.MachineLocation;
diff --git a/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefServerTasks.java b/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefServerTasks.java
index c81ff9d..af0c813 100644
--- a/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefServerTasks.java
+++ b/software/cm/chef/src/main/java/org/apache/brooklyn/entity/chef/ChefServerTasks.java
@@ -51,7 +51,7 @@
         if (data==null) return null;
         try {
             f.deleteOnExit();
-            Files.write(SecureKeys.stringPem(data), f, Charset.defaultCharset());
+            Files.write(SecureKeys.toPem(data), f, Charset.defaultCharset());
             return f;
         } catch (IOException e) {
             throw Throwables.propagate(e);
diff --git a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/StormAbstractCloudLiveTest.java b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/StormAbstractCloudLiveTest.java
index 9fa27bf..e712791 100644
--- a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/StormAbstractCloudLiveTest.java
+++ b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/storm/StormAbstractCloudLiveTest.java
@@ -34,8 +34,9 @@
 import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.entity.EntityAsserts;
 import org.apache.brooklyn.core.entity.trait.Startable;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
 import org.apache.brooklyn.core.test.BrooklynAppLiveTestSupport;
+import org.apache.brooklyn.entity.messaging.storm.topologies.ExclamationBolt;
+import org.apache.brooklyn.entity.zookeeper.ZooKeeperEnsemble;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.core.ResourceUtils;
 import org.apache.brooklyn.util.core.file.ArchiveBuilder;
@@ -45,10 +46,12 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import com.google.common.base.Throwables;
+import com.google.common.collect.ImmutableList;
+
 import backtype.storm.Config;
 import backtype.storm.StormSubmitter;
 import backtype.storm.generated.AlreadyAliveException;
@@ -57,12 +60,6 @@
 import backtype.storm.testing.TestWordSpout;
 import backtype.storm.topology.TopologyBuilder;
 
-import org.apache.brooklyn.entity.messaging.storm.topologies.ExclamationBolt;
-import org.apache.brooklyn.entity.zookeeper.ZooKeeperEnsemble;
-
-import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
-
 public abstract class StormAbstractCloudLiveTest extends BrooklynAppLiveTestSupport {
 
     protected static final Logger log = LoggerFactory
@@ -73,17 +70,11 @@
     private Storm supervisor;
     private Storm ui;
 
-    @BeforeClass(alwaysRun = true)
-    public void beforeClass() throws Exception {
-        mgmt = new LocalManagementContext();
-        location = mgmt.getLocationRegistry()
-                .getLocationManaged(getLocation(), getFlags());
+    @BeforeMethod(alwaysRun = true)
+    @Override
+    public void setUp() throws Exception {
         super.setUp();
-    }
-
-    @AfterClass(alwaysRun = true)
-    public void afterClass() throws Exception {
-        // Entities.destroyAll(mgmt);
+        location = mgmt.getLocationRegistry().getLocationManaged(getLocation(), getFlags());
     }
 
     public abstract String getLocation();
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 222891e..b8366a9 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
@@ -118,10 +118,10 @@
         entity.sensors().set(NginxController.PID_FILE, getRunDir() + "/" + AbstractSoftwareProcessSshDriver.PID_FILENAME);
         if (((AbstractController)entity).isSsl()) {
             entity.sensors().set(Attributes.HTTPS_PORT, getPort());
-            ((EntityInternal)entity).removeAttribute(Attributes.HTTP_PORT);
+            ((EntityInternal)entity).sensors().remove(Attributes.HTTP_PORT);
         } else {
             entity.sensors().set(Attributes.HTTP_PORT, getPort());
-            ((EntityInternal)entity).removeAttribute(Attributes.HTTPS_PORT);
+            ((EntityInternal)entity).sensors().remove(Attributes.HTTPS_PORT);
         }
         super.postLaunch();
     }
