Actually run .off cleanup function, eliminate extra indirection level