All you really need for that is named procedures. A way to combine modules and different files certainly helps too.
Type hierarchies can even hinder code reuse, because you can’t just pick the stuff you actually need.