added sub_or_super switch