I agree that SC's are costly. But callbacks as an idea can be cheap. Maybe part of the problem is the SC implementation. We might consider a lighter-weight, nsv-based thing that maintains a list of procs to call, each added to the nsv by the appropriate package-init.tcl script, with the arglist handled either by convention or passed through global scope. If lighter weight, I wouldn't have a problem with callbacks that were only hooked into once, because the abstraction would be well worth it. Still thinking...