more detailed friend class specification