A Cosmology Of Datatypes : Reusability And Dependent Types