Switch back to using Rank-N types for the Source type

This alleviates a lot of house-keeping work that should not be a burdern
on the user.