refactoring with procedural decomposition