updated to be kind of oop

things still don't exactly work. wait, no, they don't work at all right
now.