Kirschner and Gerhart developed the idea of interfaces as "constraints that deconstrain": points of fixed functionality that separate modules so that the modules can evolve independently rather than being intertwined.