moved cached control and added canToggle