extensively revised