As mentioned, I think the specific implementations should be all private.