add setup.py and dependency handling