Client & server implementation (taken from hl-tasks repo).