public void setLocation(Location newLocation) {

        // If either the add or remove involves a colony, call the
        // colony-specific routine...
        Colony oldColony = (location instanceof WorkLocation)
            ? this.getColony() : null;
        Colony newColony = (newLocation instanceof WorkLocation)
            ? newLocation.getColony() : null;
        // However if the unit is moving within the same colony,
        // do not call the colony-specific routines.
        if (oldColony == newColony) oldColony = newColony = null;

        boolean result = true;
        if (location != null) {
            result = (oldColony != null)
                ? oldColony.removeUnit(this)
                : location.remove(this);
        }
        /*if (!result) return false;*/

        location = newLocation;
        // Explore the new location now to prevent dealing with tiles
        // with null (unexplored) type.
        getOwner().setExplored(this);

        // It is possible to add a unit to a non-specific location
        // within a colony by specifying the colony as the new
        // location.
        if (newLocation instanceof Colony) {
            newColony = (Colony) newLocation;
            location = newLocation = newColony.getWorkLocationFor(this);
        }

        if (newLocation != null) {
            result = (newColony != null)
                ? newColony.addUnit(this, (WorkLocation) newLocation)
                : newLocation.add(this);
        }

        return /*result*/;
    }