[This is an RFC post; I intend to commit this tomorrow but I would appreciate anyone looking over it.]