- add friend impl
- remove friend impl