I'm not sure. I suppose if `Type`s ever did have to share some common "stuff" then an abstract class would be appropriate. Refactoring.