generalize assignment into an expression