diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorState.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorState.java
index 0621042..d09092a 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorState.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorState.java
@@ -202,9 +202,10 @@
     public boolean anoint(Commit<? extends Anoint> commit) {
         try {
             String topic = commit.operation().topic();
+            NodeId nodeId = commit.operation().nodeId();
             Leadership oldLeadership = leadership(topic);
             ElectionState electionState = elections.computeIfPresent(topic,
-                    (k, v) -> new ElectionState(v).transferLeadership(commit.operation().nodeId(), termCounter(topic)));
+                    (k, v) -> v.transferLeadership(nodeId, termCounter(topic)));
             Leadership newLeadership = leadership(topic);
             if (!Objects.equal(oldLeadership, newLeadership)) {
                 notifyLeadershipChange(oldLeadership, newLeadership);
@@ -230,7 +231,7 @@
             if (oldLeadership == null || !oldLeadership.candidates().contains(nodeId)) {
                 return false;
             }
-            elections.computeIfPresent(topic, (k, v) -> new ElectionState(v).promote(commit.operation().nodeId()));
+            elections.computeIfPresent(topic, (k, v) -> v.promote(nodeId));
             Leadership newLeadership = leadership(topic);
             if (!Objects.equal(oldLeadership, newLeadership)) {
                 notifyLeadershipChange(oldLeadership, newLeadership);
@@ -498,7 +499,7 @@
                                                   .filter(r -> r.nodeId().equals(nodeId))
                                                   .findFirst()
                                                   .orElse(null);
-            List<Registration> updatedRegistrations = Lists.newLinkedList();
+            List<Registration> updatedRegistrations = Lists.newArrayList();
             updatedRegistrations.add(registration);
             registrations.stream()
                          .filter(r -> !r.nodeId().equals(nodeId))
