Correct module architecture, use setup.py, switch to click instead of argparse