friend and not friend interface implement