this is gonna be a long thread