refactor controller updates

same as previous commit, but on updates