private void call(Entity entity) {
		if (entity == null) {
			trace("No entity to call");
			return;
		}

		if (entity instanceof LabelEntity || entity instanceof VerbEntity || entity instanceof PlaceEntity
				|| entity instanceof ObjectEntity) {
			trace("Calling " + entity);
		} else {
			// Ignore calls to BADWORD or empty variables
			if (entity.getId() == Constants.ARG_VALUE_BADWORD || entity instanceof VariableEntity) {
				trace("Ignoring CALL to " + entity);
				return;
			}

			glitch("Bad CALL: " + entity);
			return;
		}

		String name = entity.getName();
		Collection<Procedure> procedures = world.getLabelProcedures().get(name);

		if (procedures.size() > 0) {
			for (Procedure proc : Lists.reverse(Lists.newArrayList(procedures)))
				vm.getExecutionStack().push(new StackFrame(proc));
		}
	}