general purpose functions, use and canUse etc