setup.py and more functions