preliminary driver loop