Fortran 90 supports fairly advanced data hiding. Any object or procedure can have its accessibility defined in a MODULE by being given a PRIVATE or PUBLIC attribute. There is, however, a drawback in that MODULE s may inherit functionality from previously written MODULE s by using them but objects and functionality that are PRIVATE in the use-associated module cannot be seen in the new module. There really needs to be a third type of accessibility which allows PRIVATE objects to be accessible outside their module under certain circumstances. This would allow for much greater extensibility.