There are Things that are required to implement Displays, but aren't actually supposed to be called that way. Either these aren't real Things, or the trait shouldn't be a requirement of a Thing.
Things do need a trait for getting drawn, because we otherwise can't keep track of which widget corresponds to each type. So I don't think we can just drop the requirement.
Maybe there are two kinds of Things: ones that are always going to be created by EntityFactory, so that we'll never know their concrete type, and others that happen to implement various traits that Things also implement.
There are Things that are required to implement Displays, but aren't actually supposed to be called that way. Either these aren't real Things, or the trait shouldn't be a requirement of a Thing.
Things do need a trait for getting drawn, because we otherwise can't keep track of which widget corresponds to each type. So I don't think we can just drop the requirement.
Maybe there are two kinds of Things: ones that are always going to be created by EntityFactory, so that we'll never know their concrete type, and others that happen to implement various traits that Things also implement.