add argument parsing