support chainable end on write