UX and JavaScript overhaul

*** DO NOT MERGE ***