do not chain whenVisible and whenChanged