should this Impl class be public?