no longer need setTimeout