removed need for argc and argv in the run function and added the --device parameter