redoing almost all of the things