-> All right, here's doc/multi-threaded.txt. Titus, please review it -> carefully! I did things slightly differently from your code. This looks great! Questions: * I think you want __init__ to call Publisher.__init__: def __init__(self, package): Publisher.__init__(self, package) self._request_dict = {} * do you want to include a section on what implications this has for things like database handles and programming in general, or just trust that thread-aware people will act accordingly? For example, psycopg (a DB-API implementation for postgresql) is threadsafe, but if you share a handle between multiple connections, then you need to serialize the sharing, or else the commit/rollback calls made in one thread will step on others. Likewise, getting a new handle for each thread is great but can lead to DoS attacks unless you put a limit on it. cheers, --titus