rework and add setup.py