Refactor
Add ability to defer hide