better command line parse