you should avoid single assignment