nearly finished just gotta do the randomization stuff