public boolean move(int newX, int newY) {
		if (newX - width < -1 || newY - height < -1 || newX >= world.getXSize()
				|| newY >= world.getYSize())
			return false;

		// check for overlap with other dudes, and invalid moves
		for(int X = 0; X < width; X++)
			for(int Y = 0; Y < height; Y++) {
				Tile tile = world.getTile(newX-X, newY-Y);
				if(!canMove(world.getTile(x-X, y-Y), tile))
					return false;
			}

		setFacing(newX, newY);
		// unlink the tiles at the old location
		// unlinkTiles(x, y);

		// update the location
		x = newX;
		y = newY;

		// link the tiles at the new location
		linkTiles(x, y);

		return true;
	}