Huge modifications / code separation