What are the advantages of refactoring?