made elements return type more specific
reintroduce avoiding the uniqueness constraint and intermediate structure