[add] continue extract interfaces
[add] more refactoring