[add] more refactored