add ability to set timeout