Reorganized, added more extensible setup