private void doAction(Message message, int myUID, int incomingUID,
				ElectionNode leftStub, ElectionNode rightStub)
				throws RemoteException {
			switch (message.type) {
			case SEND:
				if (incomingUID > myUID) {
					if (nodeState != NodeState.LIMBO) {
						nodeState = NodeState.LIMBO;
						overseer.reportNodeDeath(nodeID);
					}
					if (message.distance > 1) {
						invoke(rightStub, createForward(message));
					} else {
						invoke(leftStub, createReply(message));
					}
				} else if (incomingUID == myUID
						&& nodeState != NodeState.LEADER) {
					nodeState = NodeState.LEADER;
					relayElected();
				}
				break;
			case REPLY:
				if (incomingUID > myUID) {
					invoke(rightStub, new Message(message));
				} else {
					inCount++;
				}
				break;
			}
		}