ughhh this is gonna be such a pain in the ass to implement