public void move(int f, int t) {
		if (this.getPoint(f).size() == 0) {
			// no piece to move
			StdOut.println("no piece to move");
			return;
		}

		if ((getCurrentPlayer() == getPlayer1()
				&& f < t)
			|| (getCurrentPlayer() == getPlayer2()
					&& t < f)) {
			// correct direction
			if (this.getState().movesLeft.contains(Math.abs(f - t))) {
				// correct distance
				BackgammonState newState = new BackgammonState(this.getState());
				// "use" the move
				newState.movesLeft.remove(new Integer(Math.abs(f - t)));
				// move the piece
				if (newState.move(newState.points.get(f - 1), newState.points.get(t - 1))) {
					// if the move was valid
					// push the undo state
					this.state.add(newState);
				}
			}
		}
	}