Large refactoring
More heavy refactoring