rework the way timeouts are dealt with