TypedThreadedDiscussion was an attempt to extract it ...