make timeout a parameter