control: now understands if and blocks