support optimal solver