Reworking everything. (this is where the bad starts!)