Refactored updating and diffing into seperate methods