wrote a bunch of code, still gotto test it