I agree that we should provide service contracts, but that doesn't mean we shouldn't put all jabber tcl procs into a proper namespace.
To get started, I would propose the following basic breakdown of the namespace.
jabber::services - All the procs for service control.
jabber::user - All the procs for service control.
jabber::user::friend - All the procs for controlling a particular user's friends.
jabber::conference - All the procs for user control.
** Martin