Thanks for your reply. Could you please explain how is that I can replace the return type of produceCommodities from [any Food] to [Food] and the compiler will accept it ? I am under the impression that the compiler won't be able to understand the concrete type of the produceCommodities function since it relies on an associated type until a specialization takes places (either by calling the function or by its implementation as explained in the lecture)