main driver portion