add friend_function