user choice logic