This repo contains example code described in my inheritance rant talk, see https://github.com/slinkp/inheritance_talk Look through the commit history to see step-by-step refactoring of an inheritance-based design to a composition-based design. Eg: `git log --reverse -p pre_refactoring refactoring_done`