Factor out update ticks

This should resolve #209, #228, and #235.