adding solver interface