solver and tests