updated argument parser