diff --git a/src/main/java/net/onrc/onos/intent/PathIntent.java b/src/main/java/net/onrc/onos/intent/PathIntent.java
index 9a49035..7caef9f 100644
--- a/src/main/java/net/onrc/onos/intent/PathIntent.java
+++ b/src/main/java/net/onrc/onos/intent/PathIntent.java
@@ -52,4 +52,9 @@
 	public Intent getParentIntent() {
 		return parentIntent;
 	}
+
+	@Override
+	public String toString() {
+		return String.format("%s, %s, %s", getId(), getState(), getPath());
+	}
 }
diff --git a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
index 042f08b..fe76714 100755
--- a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
+++ b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
@@ -7,6 +7,7 @@
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.concurrent.locks.ReentrantLock;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -49,6 +50,7 @@
 	private PersistIntent persistIntent;
 
 	private IEventChannel<Long, IntentOperationList> opEventChannel;
+	private final ReentrantLock lock = new ReentrantLock();
 	private static final String INTENT_OP_EVENT_CHANNEL_NAME = "onos.pathintent";
 	private static final String INTENT_STATE_EVENT_CHANNEL_NAME = "onos.pathintent_state";
 	private static final Logger log = LoggerFactory.getLogger(PathCalcRuntimeModule.class);
@@ -126,63 +128,72 @@
 
 	@Override
 	public IntentOperationList executeIntentOperations(IntentOperationList list) {
-		// update the map of high-level intents
-		log("begin_updateInMemoryIntents");
-		highLevelIntents.executeOperations(list);
+		lock.lock(); // TODO optimize locking using smaller steps
+		try {
+			// update the map of high-level intents
+			log("begin_updateInMemoryIntents");
+			highLevelIntents.executeOperations(list);
 
-		// change states of high-level intents
-		IntentStateList states = new IntentStateList();
-		for (IntentOperation op : list) {
-			if (op.intent.getState().equals(IntentState.INST_ACK))
-				states.put(op.intent.getId(), IntentState.REROUTE_REQ);
-		}
-		highLevelIntents.changeStates(states);
-		log("end_updateInMemoryIntents");
-
-		// calculate path-intents (low-level operations)
-		log("begin_calcPathIntents");
-		IntentOperationList pathIntentOperations = runtime.calcPathIntents(list, highLevelIntents, pathIntents);
-		log("end_calcPathIntents");
-
-		// persist calculated low-level operations into data store
-		log("begin_persistPathIntents");
-		long key = persistIntent.getKey();
-		persistIntent.persistIfLeader(key, pathIntentOperations);
-		log("end_persistPathIntents");
-
-		// remove error-intents and reflect them to high-level intents
-		log("begin_removeErrorIntents");
-		states.clear();
-		Iterator<IntentOperation> i = pathIntentOperations.iterator();
-		while (i.hasNext()) {
-			IntentOperation op = i.next();
-			if (op.operator.equals(Operator.ERROR)) {
-				states.put(op.intent.getId(), IntentState.INST_NACK);
-				i.remove();
+			// change states of high-level intents
+			IntentStateList states = new IntentStateList();
+			for (IntentOperation op : list) {
+				if (op.intent.getState().equals(IntentState.INST_ACK))
+					states.put(op.intent.getId(), IntentState.REROUTE_REQ);
 			}
-		}
-		highLevelIntents.changeStates(states);
-		log("end_removeErrorIntents");
+			highLevelIntents.changeStates(states);
+			log("end_updateInMemoryIntents");
 
-		// update the map of path intents and publish the path operations
-		log("begin_updateInMemoryPathIntents");
-		pathIntents.executeOperations(pathIntentOperations);
-		log("end_updateInMemoryPathIntents");
+			// calculate path-intents (low-level operations)
+			log("begin_calcPathIntents");
+			IntentOperationList pathIntentOperations = runtime.calcPathIntents(list, highLevelIntents, pathIntents);
+			log("end_calcPathIntents");
 
-		// Demo special: add a complete path to remove operation
-		log("begin_addPathToRemoveOperation");
-		for (IntentOperation op: pathIntentOperations) {
-			if(op.operator.equals(Operator.REMOVE)) {
-				op.intent = pathIntents.getIntent(op.intent.getId());
+			// persist calculated low-level operations into data store
+			log("begin_persistPathIntents");
+			long key = persistIntent.getKey();
+			persistIntent.persistIfLeader(key, pathIntentOperations);
+			log("end_persistPathIntents");
+
+			// remove error-intents and reflect them to high-level intents
+			log("begin_removeErrorIntents");
+			states.clear();
+			Iterator<IntentOperation> i = pathIntentOperations.iterator();
+			while (i.hasNext()) {
+				IntentOperation op = i.next();
+				if (op.operator.equals(Operator.ERROR)) {
+					states.put(op.intent.getId(), IntentState.INST_NACK);
+					i.remove();
+				}
 			}
-		}
-		log("end_addPathToRemoveOperation");
+			highLevelIntents.changeStates(states);
+			log("end_removeErrorIntents");
 
-		// send notification
-		log("begin_sendNotification");
-		opEventChannel.addEntry(key, pathIntentOperations);
-		log("end_sendNotification");
-		return pathIntentOperations;
+			// update the map of path intents and publish the path operations
+			log("begin_updateInMemoryPathIntents");
+			pathIntents.executeOperations(pathIntentOperations);
+			log("end_updateInMemoryPathIntents");
+
+			// Demo special: add a complete path to remove operation
+			log("begin_addPathToRemoveOperation");
+			for (IntentOperation op: pathIntentOperations) {
+				if(op.operator.equals(Operator.REMOVE)) {
+					op.intent = pathIntents.getIntent(op.intent.getId());
+				}
+				if (op.intent instanceof PathIntent) {
+					log.debug("operation: {}, intent:{}", op.operator, op.intent);
+				}
+			}
+			log("end_addPathToRemoveOperation");
+
+			// send notification
+			log("begin_sendNotification");
+			opEventChannel.addEntry(key, pathIntentOperations);
+			log("end_sendNotification");
+			return pathIntentOperations;
+		}
+		finally {
+			lock.unlock();
+		}
 	}
 
 	@Override
@@ -263,37 +274,42 @@
 	@Override
 	public void entryUpdated(IntentStateList value) {
 		// TODO draw state transition diagram in multiple ONOS instances and update this method
+		lock.lock(); // TODO optimize locking using smaller steps
+		try {
+			log("called_EntryUpdated");
+			// reflect state changes of path-level intent into application-level intents
+			log("begin_changeStateByNotification");
+			IntentStateList parentStates = new IntentStateList();
+			for (Entry<String, IntentState> entry: value.entrySet()) {
+				PathIntent pathIntent = (PathIntent) pathIntents.getIntent(entry.getKey());
+				if (pathIntent == null) continue;
 
-		log("called_EntryUpdated");
-		// reflect state changes of path-level intent into application-level intents
-		log("begin_changeStateByNotification");
-		IntentStateList parentStates = new IntentStateList();
-		for (Entry<String, IntentState> entry: value.entrySet()) {
-			PathIntent pathIntent = (PathIntent) pathIntents.getIntent(entry.getKey());
-			if (pathIntent == null) continue;
+				Intent parentIntent = pathIntent.getParentIntent();
+				if (parentIntent == null ||
+						!(parentIntent instanceof ShortestPathIntent) ||
+						!((ShortestPathIntent) parentIntent).getPathIntentId().equals(pathIntent.getId()))
+					continue;
 
-			Intent parentIntent = pathIntent.getParentIntent();
-			if (parentIntent == null ||
-					!(parentIntent instanceof ShortestPathIntent) ||
-					!((ShortestPathIntent) parentIntent).getPathIntentId().equals(pathIntent.getId()))
-				continue;
-
-			IntentState state = entry.getValue();
-			switch (state) {
-			case INST_REQ:
-			case INST_ACK:
-			case INST_NACK:
-			case DEL_REQ:
-			case DEL_ACK:
-			case DEL_PENDING:
-				parentStates.put(parentIntent.getId(), state);
-				break;
-			default:
-				break;
+				IntentState state = entry.getValue();
+				switch (state) {
+				case INST_REQ:
+				case INST_ACK:
+				case INST_NACK:
+				case DEL_REQ:
+				case DEL_ACK:
+				case DEL_PENDING:
+					parentStates.put(parentIntent.getId(), state);
+					break;
+				default:
+					break;
+				}
 			}
+			highLevelIntents.changeStates(parentStates);
+			pathIntents.changeStates(value);
+			log("end_changeStateByNotification");
 		}
-		highLevelIntents.changeStates(parentStates);
-		pathIntents.changeStates(value);
-		log("end_changeStateByNotification");
+		finally {
+			lock.unlock();
+		}
 	}
 }
