1. refactor source