Paraphrasing: Generating parallel programs using refactoring