def __init__(self, sock, paging_handler = lambda x: None):
        #TODO: Put a meaningful timeout
        self._socket = sock
        self._protocol = AvatarLowlevelProtocol(self._socket, self._handle_received_message)

        self._terminate = threading.Event()
        self._state = None
        self._asynchronous_messages_handler = paging_handler
        self._queued_commands = Queue()
        self._received_synchronous_messages = Queue()
        self._send_thread = threading.Thread(target = self.run_send)
        self._send_lock = threading.Lock()
        self._send_thread.start()