same protocol as client