![](https://secure.gravatar.com/avatar/da8638bce265a9edbab91dd837042d03.jpg?s=120&d=mm&r=g)
OK, I have committed a first shot at fixing this. However, there is no easy way to have a module update its components upon dependency change but not have a system update its components upon dependency change, because a system is a subclass of module. So my path may not be desirable, or at any rate the community may want to think about it a bit before adopting it. Furthermore, I did the patch as a minimal perturbation to TRAVERSE, which has a structure which I, at least, find somewhat difficult to follow. The structure is one large function with a FORCED variable which holds the plan (sequence of OP . COMPONENT pairs). This large function contains three sub-functions in LABELS that destructively modify the FORCED variable. I think a good case could be made for breaking those sub-functions out (for easier tracing, if nothing else), and having them return values that are appended onto the list, instead of side-effecting. But this is an aesthetic matter, and would also create many problems for understanding the modifications I made, so I did NOT do this. Since these changes seem to me controversial, I did not push my changes into the main repository, but instead added a "module-depends" branch to the common-lisp.net git repository. I hope that this will make the changes easier to assess. Cheers, r