Question: ```
public void setSpeciality(String spec) {
    if(specialities.stream().anyMatch(s-> s.equalsIgnoreCase(spec))) {
        speciality =spec;
    }
    else
    speciality = "General Practitioner";
}

```

I need to search an array list called specialities (case insensitive) ^ see my attempt at an answer^ but cant figure out what in my answer is wrong.

Answer: 
`anyMatch` only returns `true` or `false` indicating whether there is at least 1 element in the stream that satisfies the predicate.

You should use `filter` and `findFirst`, which returns the first element that matches the predicate:

```
speciality = specialities.stream()
                 .filter(spec::equalsIgnoreCase)
                 .findFirst()
                 .orElse("General Practitioner");

```
just include, `speciality =spec.toLowerCase();` and convert the first character to uppercase

```
public void setSpeciality(String spec) {
    if(specialities.stream().anyMatch(s-> s.equalsIgnoreCase(spec))) {
        speciality =spec.toLowerCase();
        speciality = String.valueOf((speciality.charAt(0)).toUpperCase())  + speciality.substring(1) ;
    }
    else {
          speciality = "General Practitioner";
    }
}

```