!!!LOUD SOUND WARNING!!! this was significantly more complex to code than i expected and it's still ridiculously barebones