setup.py refactored