existential types and functional dependencies