solver improvements