Switched to using setup.py, refactored