make timeout a parameter to loop()