public boolean addPiece(final AbstractPiece the_piece){
		final Point location = the_piece.my_location;

		int x = location.x;
		int y = location.y;
		
		if(y < 0 || y - the_piece.my_point1.y < 0 || y - the_piece.my_point2.y < 0 || y - the_piece.my_point3.y < 0 || y - the_piece.my_point4.y < 0) {
			gameOver();
		}
		
		
		
		x = x + the_piece.my_point1.x;
		y = y - the_piece.my_point1.y;

		my_board.get(y).set(x, the_piece);

		x = location.x;
		y = location.y;
		x = x + the_piece.my_point2.x;
		y = y - the_piece.my_point2.y;

		my_board.get(y).set(x, the_piece);

		x = location.x;
		y = location.y;
		x = x + the_piece.my_point3.x;
		y = y - the_piece.my_point3.y;

		my_board.get(y).set(x, the_piece);

		x = location.x;
		y = location.y;
		x = x + the_piece.my_point4.x;
		y = y - the_piece.my_point4.y;

		my_board.get(y).set(x, the_piece);
		createNextPiece();
		checkFullRows();
		return true;
	}