updated and streamlined