The document discusses restructuring code to improve modularity. It defines restructuring as reorganizing a codebase without modifying code to improve understandability. The author advocates using visualization tools like Levelized Structure Maps to understand a codebase's structure at a global level in order to divide it into coherent modules. Various restructuring strategies are presented, including merging parallel structures, busting large class tangles, and moving classes and packages to improve dependencies before further refactoring. The goal is to tackle complexity before modularity to make the codebase easier to comprehend and maintain.