Reupload everything with new structure and maximum modularization