I dont like how complicated this is