most functionality done, needs styling and bug fixes