diff --git a/simulators/c++2/src_simulator/BusMaster.h b/simulators/c++2/src_simulator/BusMaster.h
index ab1ed73a3e4490d84a36441d592fa886daf39aba..8b677cdc99ae8ac3fbf835de129df670f2775521 100644
--- a/simulators/c++2/src_simulator/BusMaster.h
+++ b/simulators/c++2/src_simulator/BusMaster.h
@@ -72,7 +72,7 @@ public:
 	void reset(){
 		_nextTransaction=0;
 		_lastSimTime=-1;
-		_nextBus=0;
+		_nextBus=_busArray[0];
 		_contentionDelay=0;
 		_noTransactions=0;
 	}
@@ -98,6 +98,7 @@ public:
 
 	void addTransaction(){
 		//_addTransFlag++;
+		//std::cout << _name << ": add Trans\n";
 		//std::cout << _name << ": trans added on Bus: " << _nextBus->toString() << std::endl;
 		_nextBus->addTransaction();
 		_nextTransaction=0;
diff --git a/simulators/c++2/src_simulator/CPU.cpp b/simulators/c++2/src_simulator/CPU.cpp
index b98df8c4b60e071e1a6dee659ad5b635955ab4d2..812db4eb7be14f3dcd8189b5bdfe5aa35fcfb604 100644
--- a/simulators/c++2/src_simulator/CPU.cpp
+++ b/simulators/c++2/src_simulator/CPU.cpp
@@ -201,22 +201,32 @@ bool CPU::addTransaction(){
 		//Slave* aLastSlave=_nextTransaction->getChannel()->getNextSlave(_nextTransaction);
 		BusMaster* aFollowingMaster =_nextTransaction->getChannel()->getNextMaster(_nextTransaction);
 		if (aFollowingMaster==0){
+			//std::cout << "1\n";
 			aFinish=true;
 			BusMaster* aTempMaster =_nextTransaction->getChannel()->getFirstMaster(_nextTransaction);
+			//std::cout << "2\n";
 			Slave* aTempSlave= _nextTransaction->getChannel()->getNextSlave(_nextTransaction);
+			//std::cout << "3\n";
 			aTempMaster->addBusContention(_nextTransaction->getStartTime()-max(_endSchedule,_nextTransaction->getRunnableTime()));
 			while (aTempMaster!=0){
+				//std::cout << "3a\n";
 				aTempMaster->addTransaction();
+				//std::cout << "3b\n";
 				aTempSlave->addTransaction(_nextTransaction);
+				//std::cout << "4\n";
 				aTempMaster =_nextTransaction->getChannel()->getNextMaster(_nextTransaction);
+				//std::cout << "5\n";
 				aTempSlave= _nextTransaction->getChannel()->getNextSlave(_nextTransaction);
 			}
+			//std::cout << "6\n";
 		}else{
 			//std::cout << _name << " bus transaction next round" << std::endl;
 			_masterNextTransaction=aFollowingMaster;
+			//std::cout << "7\n";
 			_masterNextTransaction->registerTransaction(_nextTransaction);
 			aFinish=false;
 		}
+		//std::cout << "8\n";
 	}
 	if (aFinish){
 #ifdef DEBUG_CPU