When there's only likely to ever be 1 implementation of a trait, it makes sense to use the "Impl" convention: trait = Foo and class = FooImpl. Though I've never really been a fan of this convention because it's kind of limiting to one implementation, it sounds like that's exactly what I need here.
When more classes implement an interface/trait, it's more likely that naming each implementation will flow more naturally.