Better argument parser