switched to Optional<E> as List return type + rec method (y comb)