allowing switchable solver