Why is this interface even necessary? Can just create the context directly through reflection and use prepare in IContext to do any necessary construction.