push down assignments to where they are needed