public ArrayList<Point> getPossibleMoves(Point start) {
		ArrayList<Point> result = new ArrayList<Point>();
		int colStart = start.getX();
		int rowStart = start.getY();
		int numOfPieces = 0;

		// col. up
		numOfPieces = getNumPiecesInCol(colStart);
		if (checkMove(rowStart, colStart, rowStart - numOfPieces, colStart)) {
			result.add(new Point(colStart, rowStart - numOfPieces));
		}
		// col. down
		if (checkMove(rowStart, colStart, rowStart + numOfPieces, colStart)) {
			result.add(new Point(colStart, rowStart + numOfPieces));
		}
		// row right
		numOfPieces = getNumPiecesInRow(rowStart);
		if (checkMove(rowStart, colStart, rowStart, colStart + numOfPieces)) {
			result.add(new Point(colStart + numOfPieces, rowStart));
		}
		// row left
		if (checkMove(rowStart, colStart, rowStart, colStart - numOfPieces)) {
			result.add(new Point(colStart - numOfPieces, rowStart));
		}
		// diag. north-east
		numOfPieces = getNumPiecesInDiagonal(rowStart, colStart, rowStart + 1,
				colStart - 1);
		if (checkMove(rowStart, colStart, rowStart + numOfPieces, colStart
				- numOfPieces)) {
			result.add(new Point(colStart - numOfPieces, rowStart + numOfPieces));
		}
		// diag. south-east
		numOfPieces = getNumPiecesInDiagonal(rowStart, colStart, rowStart + 1,
				colStart + 1);
		if (checkMove(rowStart, colStart, rowStart + numOfPieces, colStart
				+ numOfPieces)) {
			result.add(new Point(colStart + numOfPieces, rowStart + numOfPieces));
		}
		// diag. south-west
		numOfPieces = getNumPiecesInDiagonal(rowStart, colStart, rowStart - 1,
				colStart + 1);
		if (checkMove(rowStart, colStart, rowStart - numOfPieces, colStart
				+ numOfPieces)) {
			result.add(new Point(colStart + numOfPieces, rowStart - numOfPieces));
		}
		// diag. north-west
		numOfPieces = getNumPiecesInDiagonal(rowStart, colStart, rowStart - 1,
				colStart - 1);
		if (checkMove(rowStart, colStart, rowStart - numOfPieces, colStart
				- numOfPieces)) {
			result.add(new Point(colStart - numOfPieces, rowStart - numOfPieces));
		}
		return result;
	}