refactor update_total on all three main models