rearrange code so more of it happens forwards