add custom timeout support