 
 		/* Set inputs for each node */
 		for name in mNodes.keys {
-			if let action = mNodes[name]?.action, let status = mNodes[name]?.status, let op = mContexts[name] {
-				KCSpriteOperationContext.setName(context: op, name: name)
-				KCSpriteOperationContext.setInterval(context: op, interval: interval)
-				KCSpriteOperationContext.setAction(context: op, action: action)
-				KCSpriteOperationContext.setStatus(context: op, status: status)
+			if let nodeinfo = mNodes[name] {
+				let node = nodeinfo.node
+				let ctxt = nodeinfo.context
+				KCSpriteOperationContext.setName(context: ctxt, name: name)
+				KCSpriteOperationContext.setInterval(context: ctxt, interval: interval)
+				KCSpriteOperationContext.setAction(context: ctxt, action: node.action)
+				KCSpriteOperationContext.setStatus(context: ctxt, status: node.status)
 			} else {
 				log(type: .Error, string: "Invalid properties", file: #file, line: #line, function: #function)
 			}
 		}
 
+		/* Collect contexts */
+		var contexts: Array<CNOperationContext> = []
+		for nodeinfo in mNodes.values {
+			contexts.append(nodeinfo.context)
+		}
+
 		/* Execute the operation */
-		let nonexecs = mQueue.execute(operations: Array(mContexts.values), timeLimit: nil)
+		let nonexecs = mQueue.execute(operations: Array(contexts), timeLimit: nil)
 		if nonexecs.count > 0 {
 			if let cons = console {
 				cons.error(string: "Failed to execute some operations\n")

	}

	public func allocate(nodeName name: String, image img: CNImage, initStatus istat: KCSpriteNodeStatus, initAction iact: KCSpriteNodeAction, condition cond: KCSpriteNodeCondition, context ctxt: CNOperationContext) -> KCSpriteNode {
		if let curnode = mNodes[name] {
			return curnode
		} else {
			/* Setup node */
			let newnode  = KCSpriteNode(graphiceMapper: mMapper, image: img, initStatus: istat, initialAction: iact, condition: cond)
			newnode.name    = name
			mNodes[name]    = newnode
			/* Setup context */
			KCSpriteOperationContext.setName(context: ctxt, name: name)
			KCSpriteOperationContext.setInterval(context: ctxt, interval: 0.0)
			KCSpriteOperationContext.setStatus(context: ctxt, status: istat)
			KCSpriteOperationContext.setAction(context: ctxt, action: KCSpriteNodeAction())
			mContexts[name] = ctxt
			CNExecuteInMainThread(doSync: false, execute: {
				[weak self] () -> Void in
				if let myself = self {

		/* Decide continue or not */
		if let checker = continuationCheckerHandler {
			var status: Array<KCSpriteNodeStatus> = []
			for nodeinfo in mNodes.values {
				status.append(nodeinfo.node.status)
			}
			if !checker(status) {
				self.isPaused = true
