Why use a trait for these sorts of things instead of a class? Aside from being a little more efficient, these types do not appear to lend themselves to being mixed in with other things. The types feel like "isA" things, perhaps with a slight change in the name e.g. MapInput could become MapInputter.