add better command line argument support