Refactoring in Large Software Projects: Performing Complex Restructurings Successfully