* fixing setup.py
* guarantee result is hashable