work with so, sa, nso, nsa. probably swap names of nso and nsa. not really tested yet