28 setup py

This is a rebased branch for #28.