Restructure to a plugin architecture
Add setup.py