allow custom timeout