Added setup.py and more robust CLI