@andralex 
>what is the issue with .init?

It's inaccessible (at least as long as the struct isn't `static` - I'm not sure about when it's `static`), which means that any place that you need `init`, you're screwed. `filter` would be the first example that I'd give given the problems that I've had with it in the past, but it looks like someone moved its implementation into a private `struct` at module scope, which should have fixed the problem.

I'm not necessarily arguing for making the return types publicly accessible, but as long as their `init` properties can't be used, I think it's a serious problem to have them be declared internally to a function.