core function kind of done
sketch out the rest of to do list