This is a move towards allowing multiple contexts - with the concept of a (possibly thread local) "current" context
(also did some reformatting)