1. refactor