This looks untested to me.