updated and clean up