- singleton with registered pointers, so they can be shared between loadable modules on Windows, example is the logger singleton currently - common spooling code in RewindInputStream must be extracted and used in a cascade of streams (or streambufs?) - use traits in rewindinputstream, alternative wrappers for char/string traits depending on underlying io stream