When I started creating this, I tried to go that "something smarter" route, but I quickly found that I needed more specific implementations of crate types to allow for chained behaviors.
Ah, so that's why.