refactoring rules