initial setup.py ported from other projects