Split render & update loops