Huge cleanup
Add loader
Modify some inheritance