This will allow us to reduce the required headers and avoid some circular dependencies in some client libraries.