Initial commit for big refactoring