better hide/show behavior