no setup.py required