Second pass, added styling, most functionality complete