Modern software is modular and semantically versioned. It has a low TOC because it's reliable so does not incur unexpected costs. This is the kind of software developers love to implement, CIOs love to buy and users love to use. But what about older, complex software; is it doomed? In this talk we'll investigate a case where a large, complex, un-modular body of code took it's first steps toward proper semantic versioning and ultimately toward modularity. We'll discuss tooling and techniques that can be used to help developers learn how to apply semantic versioning.