add timeout handle + slow connection optimized