finished code. just needs styling