basic functionality in driver.c