VDoc now takes the context.  Also, beforeChange is now abstract