yet another attempt to live happily with setTimeout