lots of changes to CSS and functionality