backed out the templetization of the context, added the concept of context initialization so that we can pass config options