incomplete but i think i've written out all the steps i need