adjusting pins and implementing drive()