public void OnReceive(Integer from, DtPacket packet){
		switch(packet.MessageType){
			case Enlist:
				OnEnlist(from, packet);
				break;
			case Abort:
				OnAbort(packet);
				break;
			case Commit:
				OnCommit(packet);
				break;
			case CommitResponse:
				// TODO garbage collect the list of coordinated transactions
				// when all participants responded 
				break;
			case VoteRequest:
				OnVoteRequest(from, packet);
				break;
			case VoteResponse:
				OnVoteResponse(from, packet);
				break;
			case DecisionRequest:
				OnDecisionRequest(from, packet);
				break;
			case DecisionResponse:
				OnDecisionResponse(packet);
				break;
			default:
				break;
		}
	}