Millis timer question(s)

Don't use addition when working with millis() times, use subtraction. This construct will fail if the addition causes an unsigned long rollover:

if(millis() > time_now + timeout){

This will continue to work even if millis() rolls over after time_now was set:

if(millis() - time_now > timeout){