Re-factor more of the update into separate methods