updated and corrected