add S.O. solver