why have we to weaken the element return type?