Cleaned up and added argparse