private void handle_conversation(final NPC npc, final Player player, final Integer option) {
		// we assume that if the player and npc are not null then things are in order...
		if (player != null && npc != null) {
				final Client client = player.getClient(); // needed for output

				boolean continue_conversation = true; // assume the conversation will continue
				
				final CNode cnvs = conversations.get(player).two;   // get the conversation itself
				final CNode node = cnvs.getOptions().get(option-1); // current node (the indicated option)
				
				conversations.get(player).two = node; // move into the specified node
				
				// send player dialog, send npc response
				send(colors(player.getName(), getDisplayColor("player")) + ": " + node.getText(), client);
				send(colors(npc.getName(), getDisplayColor("npc")) + ": " + node.getResponse(), client);
				send("", client);
				
				debug("* CNode");
				debug("ID: " + node.getId());
				debug("Text: " + node.getText());
				debug("Response: " + node.getResponse());
				debug("Options: ");
				debug("Ends: " + node.ends);
				
				// do some kind of check on the selected option (-1 is an invalid option?)
				if( node.ends ) continue_conversation = false;
				
				// if the conversation continues, list the current options
				if( continue_conversation ) {
					send("-- Conversation (" + npc.getName() + ")", client);
					
					final List<String> convOpts = new LinkedList<String>();
					
					int n = 1;
					
					for(final CNode cn : node.getOptions()) {
						if( cn.ends ) convOpts.add(n + " ) " + colors(cn.getText() + " (Ends Conversation)", "green") );
						else          convOpts.add(n + " ) " + colors(cn.getText(), "green") );
						
						n++;
					}
					
					send(convOpts, client);
					
					send("", client);
				}
				else {
					player.setStatus("IC"); // reset status: CNVS -> IC
					
					look(getRoom(player.getLocation()), client);
				}
		}
	}