public void handleDeath(final Creature creature, final Player player) {
		if (creature == null) {
			send("Error!", player.getClient());
			return;
		}

		final Room room = getRoom( creature.getLocation() );
		
		if (creature.getHP() <= 0) {
			debug("Creature: \"" + creature.getName() + "\" Location: " + room.getName() + " (#" + room.getDBRef() + ")");

			// remove/destroy creature ?
			creature.setLocation(-1);
			//destroy(creature);
			
			final List<Item> treasure = generateLoot(creature);
			
			room.addItems( treasure );

			final String cName = creature.getName();
			final TypeFlag cType = creature.getType();

			// check my quests, and then pass an QuestUpdate if I advanced it
			final Quest active_quest = player.getActiveQuest();

			if (active_quest != null) {
				debug("Active Quest: " + active_quest.getName());

				debug(active_quest.getLocation().getName());
				debug(getZone(player).getName());

				if (active_quest.getLocation() == getZone(player)) {
					debug("Player is in the quest's Zone");

					// check each task
					for (final Task task : active_quest.getTasks(true)) { // get incomplete tasks
						if ( task.isType(TaskType.KILL) ) {
							final KillTask kt = (KillTask) task;
							
							debug("Task: " + kt.getName());

							// is the thing we killed the thing this quest asks us to
							final Data objectiveData = task.getObjective();

							MUDObject objective = null;

							if (objectiveData != null) {
								objective = (MUDObject) objectiveData.getObject("target");
							}
							else {
								send("Game> Error? Objective Data is NULL.");
								break;
							}

							if (objective != null) {
								if (objective.isType(TypeFlag.CREATURE)) {
									final Creature c = (Creature) objective;

									if (c == creature || c.getRace() == creature.getRace() || c.getName() == creature.getName()) {
										kt.kills++;
									}
								}
								else if (objective.isType(TypeFlag.PLAYER)) {
								}

								task.update(null); // dummy update

								if ( task.isComplete() ) {
									// send("You completed the task ( " + task.getDescription() + " )" , player.getClient());
									final String taskDesc = colors(task.getDescription(), "green");
									send("You completed the task " + taskDesc, player.getClient());
								}
								else send("task not done yet.", player.getClient());

								//

								final QuestUpdate qu = new QuestUpdate(active_quest.getId());
								final TaskUpdate tu = new TaskUpdate(task.getId());

								qu.taskUpdates.add(tu);

								active_quest.update(qu);

								if (active_quest.isComplete()) {
									// send("You completed the quest ("+
									// active_quest.getName() + ")",
									// player.getClient());
									final String questName = colors(active_quest.getName(), getDisplayColor("quest"));
									send("You completed the quest " + questName, player.getClient());
								}
								else send("Quest not completed!", player.getClient());

								break;
							}
							else send("Task> Invalid Target!", player.getClient());
						}
					}
				}
			}

			// for each of the player's quests
			for (Quest quest1 : player.getQuests()) {
				// if we're in the right zone
				if (quest1.getLocation() == getZone(player)) {
					// check each task
					for (Task task : quest1.getTasks(true)) { // get incomplete tasks
						if (task.isType(TaskType.KILL)) {
							final KillTask kt = (KillTask) task;

							// is the thing we killed the thing this quest asks us to
							final Data objectiveData = task.getObjective();
							final MUDObject objective = (MUDObject) objectiveData.getObject("target");

							if (objective != null) {
								if (objective.isType(TypeFlag.CREATURE)) {
									final Creature c = (Creature) objective;

									if (c == creature || c.getRace() == creature.getRace() || c.getName() == creature.getName()) {
										kt.kills++;
										task.update(null); // dummy update

										if (task.isComplete()) {
											send("You completed the task ( " + task.getDescription() + " )", player.getClient());
										}

										break;
									}
								}
								else if (objective.isType(TypeFlag.PLAYER)) {
								}
							}
						}
					}
				}
			}
		}
	}