Refactoring functional code