make affect() chainable