s, o, oo are all handled in .functions