In the 4th installment we looked for tell-tale signs of incorrect design called code “smells.” Just as cheese starts to smell a bit ripe as it’s going bad, programs also have their own “smells” as they start to deteriorate and their design becomes suboptimal as code is continuously modified. Code “smells” are warning signs that signal that a program may no longer be designed correctly. Each particular design flaw has its own “smell” that needs to be found before the program flaw can be corrected. Once you detect a design flaw, what do you do about it? This is where refactoring comes in.