Merging with Hopper's Code
I may have edited the whole thing whoops

yf oops