default for timeout is nil
implement the actual 'repeat' feature