basically all done, messy