boolean rotateAlgorithm(Board board, Point base, Point[] newRel, Point[] kickList) {
		Point[] tmp = kickList;
		kickList = new Point[kickList.length+1];
		kickList[0] = new Point(0,0);
		for (int i = 0; i < tmp.length; i++) {
			kickList[i+1] = tmp[i];
		}
		
		for (Point p : kickList) {
			Point newBase = Point.translate(base, p);
			if (board.isEmpty(genSelection(newBase, newRel))) {
				this.base = newBase;
				this.rel = newRel;
				board.resetTicksSinceMove();
				return true;
			}
		}
		return false;
	}