a bunch of shit that i dont want to explain