realizing I have to do everything as a callback
rewrote as callbacks