Tidying my basic binry-hop into ASDF3's :package-inferred-system was an adventure. I'm still getting my head around what :mix does and under what conditions it does it, because it does not do it all the time and attempts to 'USE-PACKAGE myself run up against WOULD CONFLICT WITH. What :mix from uiop:define-package does is orderedly shadow a set of other packages, preferring to shadow exports from the leftmost package to resolve conflicts. Further, it re-exports the exports. Or does it? What I am seeing is that when I am (in-package :binry-hop) I can see all the exports I've mixed in, but when I (apropos 'diff-diff) I only see it as an export from :binry-hop-util . From which it is mixed into :binry-hop. Probably I am making some green mistake. In general I am finding forced-reloads of single file sub-packages in a package in a running lisp image very powerful. (require :binry-hop) ;; make some changes to ~/common-lisp/binry-hop/src/util.lisp (asdf:operate 'asdf:load-op "binry-hop/src/util" :force t) and hence :binry-hop-util defined by that file is updated. Without :force t a loaded package won't be recompiled/loaded.