Heavily restructured the entire package for setup.py