An Empirical Evaluation of Refactoring