use a global update timeout, add tests for show/hide, fix show