Given that this is implementation-independent, it should probably go right into the API module as the default implementation.  Also it should be package-private.