beef up entry point with argument parsing