Manipulating distinct types