Large refactoring

Share