implemented canToggle