updated with smooth scroll