diff --git a/README/ReleaseNotes/v608/index.md b/README/ReleaseNotes/v608/index.md
index 45d47a3b027107cb13b5133e1aafce75aab22f7e..da12f8e2e0bde61d76c768c5f40a11a8e9ab9df7 100644
--- a/README/ReleaseNotes/v608/index.md
+++ b/README/ReleaseNotes/v608/index.md
@@ -40,7 +40,7 @@ The following people have contributed to this new version:
 
 
 ## Core Libraries
-
+TObject.h doesn't include TBuffer.h anymore. Third party headers replying on the definition of TBufer will need to include TBuffer.h.
 
 ## Histogram Libraries
 
@@ -64,7 +64,7 @@ The following people have contributed to this new version:
 
 
 ## I/O Libraries
-
+Custom streamers need to #include TBuffer.h explicitly.
 
 ## Database Libraries
 
diff --git a/core/base/inc/TDirectory.h b/core/base/inc/TDirectory.h
index 56c768637e618d9dc514d9d912f06649112c4ce1..cb52d6ff2e4e38e06cea1e1d3a0db04fe10deb64 100644
--- a/core/base/inc/TDirectory.h
+++ b/core/base/inc/TDirectory.h
@@ -21,6 +21,9 @@
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
+#ifndef ROOT_TBuffer
+#include "TBuffer.h"
+#endif
 #ifndef ROOT_TNamed
 #include "TNamed.h"
 #endif
diff --git a/core/base/inc/TObject.h b/core/base/inc/TObject.h
index f439238960765d5ac7c68d70751d99abed1b574e..763ff8deaa81aab93ccc9cafd8420bcddfeb5311 100644
--- a/core/base/inc/TObject.h
+++ b/core/base/inc/TObject.h
@@ -234,8 +234,4 @@ namespace cling {
    std::string printValue(TObject *val);
 }
 
-#ifndef ROOT_TBuffer
-#include "TBuffer.h"
-#endif
-
 #endif
diff --git a/core/base/src/TAttAxis.cxx b/core/base/src/TAttAxis.cxx
index 0bfd40b2a1c8e543c0e3c8826fa76b495e280cbc..30a58c769cf988ca540e4dbdcedcd6bf504e7aa5 100644
--- a/core/base/src/TAttAxis.cxx
+++ b/core/base/src/TAttAxis.cxx
@@ -11,6 +11,7 @@
 
 #include "Riostream.h"
 #include "TAttAxis.h"
+#include "TBuffer.h"
 #include "TStyle.h"
 #include "TVirtualPad.h"
 #include "TColor.h"
diff --git a/core/base/src/TInetAddress.cxx b/core/base/src/TInetAddress.cxx
index 30064366b96d40b6b12bfd0b0d113f7bd9bd3f50..c664d40fb9ab345c42b35c37789f0e500e6ae353 100644
--- a/core/base/src/TInetAddress.cxx
+++ b/core/base/src/TInetAddress.cxx
@@ -14,6 +14,7 @@ This class represents an Internet Protocol (IP) address.
 */
 
 #include "TInetAddress.h"
+#include "TBuffer.h"
 #include "TClass.h"
 
 ClassImp(TInetAddress)
diff --git a/core/base/src/TMD5.cxx b/core/base/src/TMD5.cxx
index 0f0a54b23c86b061c49d22d0ee07ea15c081dd54..fde1adbe9bfea8044cb2371974bed108b3d44d06 100644
--- a/core/base/src/TMD5.cxx
+++ b/core/base/src/TMD5.cxx
@@ -28,6 +28,7 @@ array with the  digest.
 */
 
 #include "TMD5.h"
+#include "TBuffer.h"
 #include "TError.h"
 #include "TSystem.h"
 #include "Bytes.h"
diff --git a/core/base/src/TVirtualPad.cxx b/core/base/src/TVirtualPad.cxx
index b46abc16deffc17a9d6e7c235cffb97ae9a12843..fe3615ca7e51d919384bff5c06e8b05f0131d407 100644
--- a/core/base/src/TVirtualPad.cxx
+++ b/core/base/src/TVirtualPad.cxx
@@ -10,6 +10,7 @@
  *************************************************************************/
 
 #include "TVirtualPad.h"
+#include "TBuffer.h"
 #include "X3DBuffer.h"
 #include "TClass.h"
 #include "TThreadSlots.h"
diff --git a/core/cont/src/TBtree.cxx b/core/cont/src/TBtree.cxx
index 19792de27785811d0a221f73912563436fe02a98..e287088ee454191050eb083e9cc93b6be5843500 100644
--- a/core/cont/src/TBtree.cxx
+++ b/core/cont/src/TBtree.cxx
@@ -164,8 +164,10 @@ item's own key).
 ~~~
 */
 
-#include <stdlib.h>
 #include "TBtree.h"
+#include "TBuffer.h"
+
+#include <stdlib.h>
 
 
 ClassImp(TBtree)
diff --git a/core/cont/src/TExMap.cxx b/core/cont/src/TExMap.cxx
index be2265b7a0e726f786cd213a24c6f46d40f97e85..15723e81076bc317d8c9d07a9be69836d4a32682 100644
--- a/core/cont/src/TExMap.cxx
+++ b/core/cont/src/TExMap.cxx
@@ -17,6 +17,7 @@ method (linear probing).
 */
 
 #include "TExMap.h"
+#include "TBuffer.h"
 #include "TError.h"
 #include "TMathBase.h"
 #include <string.h>
diff --git a/core/cont/src/TRefTable.cxx b/core/cont/src/TRefTable.cxx
index 6c18a5e5e1d2e299d0695148da8868af69adee27..07a149b0f3495b1048eb3dfb75823d9994a537b6 100644
--- a/core/cont/src/TRefTable.cxx
+++ b/core/cont/src/TRefTable.cxx
@@ -37,6 +37,7 @@ for quick non-persistent lookup.
 */
 
 #include "TRefTable.h"
+#include "TBuffer.h"
 #include "TObjArray.h"
 #include "TProcessID.h"
 #include <algorithm>
diff --git a/core/meta/src/TBaseClass.cxx b/core/meta/src/TBaseClass.cxx
index 2030f34f605a924d39a6e642592c1e75f6d08b88..f7315ed0859efaae134c9e94711694a6e096971f 100644
--- a/core/meta/src/TBaseClass.cxx
+++ b/core/meta/src/TBaseClass.cxx
@@ -10,6 +10,7 @@
  *************************************************************************/
 
 #include "TBaseClass.h"
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TInterpreter.h"
 #include <limits.h>
diff --git a/core/meta/src/TListOfDataMembers.cxx b/core/meta/src/TListOfDataMembers.cxx
index 2a9746269418b9e5e7dc812a67fec630edbd8993..6d09ad26a8da817950cb39c01918c8c74c3a11c0 100644
--- a/core/meta/src/TListOfDataMembers.cxx
+++ b/core/meta/src/TListOfDataMembers.cxx
@@ -16,6 +16,7 @@ unloaded data member.
 */
 
 #include "TListOfDataMembers.h"
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TClassRef.h"
 #include "TExMap.h"
diff --git a/geom/geom/src/TGeoArb8.cxx b/geom/geom/src/TGeoArb8.cxx
index f93f3a8b1afb12008311cd0b4fabe49edceb5ba8..7900a6de668824af3e9c09a5457a5275c0435fe5 100644
--- a/geom/geom/src/TGeoArb8.cxx
+++ b/geom/geom/src/TGeoArb8.cxx
@@ -9,11 +9,12 @@
  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
  *************************************************************************/
 
-#include "Riostream.h"
+#include "TGeoArb8.h"
 
+#include "Riostream.h"
+#include "TBuffer.h"
 #include "TGeoManager.h"
 #include "TGeoVolume.h"
-#include "TGeoArb8.h"
 #include "TGeoMatrix.h"
 #include "TMath.h"
 
diff --git a/geom/geom/src/TGeoPatternFinder.cxx b/geom/geom/src/TGeoPatternFinder.cxx
index cc3c914b5f74e5460d4358db75146e6120320658..f1d24001c4794337f649d6aa799f530aff40a4ad 100644
--- a/geom/geom/src/TGeoPatternFinder.cxx
+++ b/geom/geom/src/TGeoPatternFinder.cxx
@@ -26,6 +26,7 @@
 #include "TGeoPatternFinder.h"
 
 #include "Riostream.h"
+#include "TBuffer.h"
 #include "TObject.h"
 #include "TThread.h"
 #include "TGeoMatrix.h"
diff --git a/geom/geom/src/TGeoPcon.cxx b/geom/geom/src/TGeoPcon.cxx
index f53ce100cfb7538a9f8511a132397b15b5df55aa..c93f08fd1beb1d967ec2e26f75510e53f671a6f9 100644
--- a/geom/geom/src/TGeoPcon.cxx
+++ b/geom/geom/src/TGeoPcon.cxx
@@ -43,14 +43,15 @@
 */
 //End_Html
 
-#include "Riostream.h"
+#include "TGeoPcon.h"
 
+#include "Riostream.h"
+#include "TBuffer.h"
 #include "TGeoManager.h"
 #include "TGeoVolume.h"
 #include "TVirtualGeoPainter.h"
 #include "TGeoTube.h"
 #include "TGeoCone.h"
-#include "TGeoPcon.h"
 #include "TVirtualPad.h"
 #include "TBuffer3D.h"
 #include "TBuffer3DTypes.h"
diff --git a/geom/geom/src/TGeoVoxelFinder.cxx b/geom/geom/src/TGeoVoxelFinder.cxx
index eb2d0a0cc2dd7f978f81e87a50b69cf4bba3c59f..1fb088bb71b308eef07bfc5841ef13ee1178df54 100644
--- a/geom/geom/src/TGeoVoxelFinder.cxx
+++ b/geom/geom/src/TGeoVoxelFinder.cxx
@@ -24,6 +24,7 @@
 //End_Html
 #include "TGeoVoxelFinder.h"
 
+#include "TBuffer.h"
 #include "TObject.h"
 #include "TMath.h"
 #include "TThread.h"
diff --git a/graf3d/g3d/src/TCTUB.cxx b/graf3d/g3d/src/TCTUB.cxx
index f043795f64e5b67a092719b39c0a14c7af17c5c7..dc3f0fcccb7447e5c49539a8588bfaba623d08a6 100644
--- a/graf3d/g3d/src/TCTUB.cxx
+++ b/graf3d/g3d/src/TCTUB.cxx
@@ -10,6 +10,7 @@
  *************************************************************************/
 
 #include "TCTUB.h"
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TMath.h"
 
diff --git a/graf3d/g3d/src/TMaterial.cxx b/graf3d/g3d/src/TMaterial.cxx
index c65a02bf16739f4f740455876540a8b856f54bb9..a863d50a69779b5865732674bb91a157ccbbe5ab 100644
--- a/graf3d/g3d/src/TMaterial.cxx
+++ b/graf3d/g3d/src/TMaterial.cxx
@@ -9,9 +9,11 @@
  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
  *************************************************************************/
 
-#include "TGeometry.h"
 #include "TMaterial.h"
 
+#include "TBuffer.h"
+#include "TGeometry.h"
+
 ClassImp(TMaterial)
 
 /** \class TMaterial
diff --git a/graf3d/g3d/src/TMixture.cxx b/graf3d/g3d/src/TMixture.cxx
index 7ae1a6a89b43f79fa1b4bc2fbabf6a916d0c72d8..7359e6c74d7f1e9af9c4810f26daae2fc90f3695 100644
--- a/graf3d/g3d/src/TMixture.cxx
+++ b/graf3d/g3d/src/TMixture.cxx
@@ -10,6 +10,8 @@
  *************************************************************************/
 
 #include "TMixture.h"
+
+#include "TBuffer.h"
 #include "TMath.h"
 
 ClassImp(TMixture)
diff --git a/graf3d/g3d/src/TPCON.cxx b/graf3d/g3d/src/TPCON.cxx
index d530bc962259c2858b8d6190bf2744d8c392ed91..f3395b048d588cfb7200e827df4c4e09b9ff720e 100644
--- a/graf3d/g3d/src/TPCON.cxx
+++ b/graf3d/g3d/src/TPCON.cxx
@@ -13,6 +13,7 @@
 #include "TNode.h"
 #include "TMath.h"
 #include "TVirtualPad.h"
+#include "TBuffer.h"
 #include "TBuffer3D.h"
 #include "TBuffer3DTypes.h"
 #include "TGeometry.h"
diff --git a/graf3d/g3d/src/TPointSet3D.cxx b/graf3d/g3d/src/TPointSet3D.cxx
index 4a33b9064d5a02910e85841eabd3a12dd4e2df62..a4f3cea3435256d2c1a7ea75f44fbac5b9aa5f64 100644
--- a/graf3d/g3d/src/TPointSet3D.cxx
+++ b/graf3d/g3d/src/TPointSet3D.cxx
@@ -10,6 +10,7 @@
  *************************************************************************/
 
 #include "TPointSet3D.h"
+#include "TBuffer.h"
 #include "TClass.h"
 
 /** \class TPointSet3D
diff --git a/graf3d/g3d/src/TRotMatrix.cxx b/graf3d/g3d/src/TRotMatrix.cxx
index e3501ebd5cf5fc5b09ec66e9445d735d97e66f11..65958f9560633808470ba2e711122a5d5f0d13ea 100644
--- a/graf3d/g3d/src/TRotMatrix.cxx
+++ b/graf3d/g3d/src/TRotMatrix.cxx
@@ -9,9 +9,10 @@
  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
  *************************************************************************/
 
-#include "TGeometry.h"
 #include "TRotMatrix.h"
+#include "TBuffer.h"
 #include "TClass.h"
+#include "TGeometry.h"
 #include "TMath.h"
 
 ClassImp(TRotMatrix)
diff --git a/graf3d/g3d/src/TSPHE.cxx b/graf3d/g3d/src/TSPHE.cxx
index 1caf66c382a47944518ac606d5f4b1245650b67f..fcc936042243237b860bfb381c9b06c5397135e6 100644
--- a/graf3d/g3d/src/TSPHE.cxx
+++ b/graf3d/g3d/src/TSPHE.cxx
@@ -12,6 +12,7 @@
 #include "TSPHE.h"
 #include "TNode.h"
 #include "TVirtualPad.h"
+#include "TBuffer.h"
 #include "TBuffer3D.h"
 #include "TBuffer3DTypes.h"
 #include "TGeometry.h"
diff --git a/graf3d/g3d/src/TShape.cxx b/graf3d/g3d/src/TShape.cxx
index 70b73104f5a6fb96fc4e94dbb83f89932c92d9bc..5948166624604ac1ad30a4ff6a9a2e42636f2421 100644
--- a/graf3d/g3d/src/TShape.cxx
+++ b/graf3d/g3d/src/TShape.cxx
@@ -15,6 +15,7 @@
 #include "TVirtualPad.h"
 #include "TGeometry.h"
 #include "TMaterial.h"
+#include "TBuffer.h"
 #include "TBuffer3D.h"
 #include "TBuffer3DTypes.h"
 #include "TVirtualViewer3D.h"
diff --git a/graf3d/g3d/src/TTUBE.cxx b/graf3d/g3d/src/TTUBE.cxx
index c4f0502dc6245c09f4b0a8491d967594d29aed7c..579e320ad9984fbfebab6f75c1179ad1de637436 100644
--- a/graf3d/g3d/src/TTUBE.cxx
+++ b/graf3d/g3d/src/TTUBE.cxx
@@ -12,6 +12,7 @@
 #include "TTUBE.h"
 #include "TNode.h"
 #include "TVirtualPad.h"
+#include "TBuffer.h"
 #include "TBuffer3D.h"
 #include "TBuffer3DTypes.h"
 #include "TGeometry.h"
diff --git a/hist/hist/src/TF1Data_v5.cxx b/hist/hist/src/TF1Data_v5.cxx
index 1346b05b4aab89a26914613c27a36e7c2800a672..ebba6726c8025d7436dd655662a53e0d059b9498 100644
--- a/hist/hist/src/TF1Data_v5.cxx
+++ b/hist/hist/src/TF1Data_v5.cxx
@@ -11,6 +11,7 @@
 
 #include "v5/TF1Data.h"
 
+#include "TBuffer.h"
 #include "TH1.h"
 
 ClassImp(ROOT::v5::TF1Data)
diff --git a/hist/hist/src/THnBase.cxx b/hist/hist/src/THnBase.cxx
index b99b08a078b1e8674a2d0a951c1b0472163f28b7..f5904f93018fcf6f272f145bf859e753607b4013 100644
--- a/hist/hist/src/THnBase.cxx
+++ b/hist/hist/src/THnBase.cxx
@@ -13,6 +13,7 @@
 
 #include "TAxis.h"
 #include "TBrowser.h"
+#include "TBuffer.h"
 #include "TError.h"
 #include "TClass.h"
 #include "TF1.h"
diff --git a/hist/hist/src/THnSparse.cxx b/hist/hist/src/THnSparse.cxx
index d4a03b0b79e869f43c8aebc7d94a977521f75dd4..d6b9e6349e32f36bc96a810f70d416ec6da8892d 100644
--- a/hist/hist/src/THnSparse.cxx
+++ b/hist/hist/src/THnSparse.cxx
@@ -12,6 +12,7 @@
 #include "THnSparse.h"
 
 #include "TAxis.h"
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TDataMember.h"
 #include "TDataType.h"
diff --git a/hist/hist/src/TProfile.cxx b/hist/hist/src/TProfile.cxx
index 7648a4f284237a02b07aac4c2ad7e467ee35d6ed..2324d7c9346896e36a71acbc763f4036b23fdbdf 100644
--- a/hist/hist/src/TProfile.cxx
+++ b/hist/hist/src/TProfile.cxx
@@ -10,6 +10,7 @@
  *************************************************************************/
 
 #include "TProfile.h"
+#include "TBuffer.h"
 #include "TMath.h"
 #include "TF1.h"
 #include "THLimitsFinder.h"
diff --git a/hist/hist/src/TProfile2D.cxx b/hist/hist/src/TProfile2D.cxx
index d221fc5065960f9ff0489336833f69b078811633..1da32ed8f2e006ecc741fede2d8d234f6158c23f 100644
--- a/hist/hist/src/TProfile2D.cxx
+++ b/hist/hist/src/TProfile2D.cxx
@@ -10,6 +10,7 @@
  *************************************************************************/
 
 #include "TProfile2D.h"
+#include "TBuffer.h"
 #include "TMath.h"
 #include "THLimitsFinder.h"
 #include "Riostream.h"
diff --git a/io/io/inc/TGenCollectionProxy.h b/io/io/inc/TGenCollectionProxy.h
index 6a99e50ccf82c07ae08b24c6be2e0c6977bda4ec..684af3f1eb1d3e842a263a79c5f1a23f71832499 100644
--- a/io/io/inc/TGenCollectionProxy.h
+++ b/io/io/inc/TGenCollectionProxy.h
@@ -11,6 +11,10 @@
 #ifndef ROOT_TGenCollectionProxy
 #define ROOT_TGenCollectionProxy
 
+#ifndef ROOT_TBuffer
+#include "TBuffer.h"
+#endif
+
 #ifndef ROOT_TVirtualCollectionProxy
 #include "TVirtualCollectionProxy.h"
 #endif
diff --git a/math/mathcore/src/TRandom3.cxx b/math/mathcore/src/TRandom3.cxx
index e5f7cf07a48172257b2ec35bd23cdb0c2d74e4a1..e94edf971bdaa06679a1c5e03e491eb4a8d3fba3 100644
--- a/math/mathcore/src/TRandom3.cxx
+++ b/math/mathcore/src/TRandom3.cxx
@@ -49,6 +49,7 @@ Drawback:  a relative large internal state of 624 integers
 /////////////////////////////////////////////////////////////////////
 
 #include "TRandom3.h"
+#include "TBuffer.h"
 #include "TRandom2.h"
 #include "TClass.h"
 #include "TUUID.h"
diff --git a/math/matrix/src/TMatrixT.cxx b/math/matrix/src/TMatrixT.cxx
index d2a15b5d955cf7d7c8096c5e40658f450d56c90a..ec1ee4668149b346b098906a74dc4bface2dd00c 100644
--- a/math/matrix/src/TMatrixT.cxx
+++ b/math/matrix/src/TMatrixT.cxx
@@ -21,6 +21,7 @@
 #include <typeinfo>
 
 #include "TMatrixT.h"
+#include "TBuffer.h"
 #include "TMatrixTSym.h"
 #include "TMatrixTLazy.h"
 #include "TMatrixTCramerInv.h"
diff --git a/math/matrix/src/TMatrixTSparse.cxx b/math/matrix/src/TMatrixTSparse.cxx
index ed6780b88bf0ec94aac4c6010da8153d7183017f..1e31062f4322c776b64f964926e0bf0db94d9bfd 100644
--- a/math/matrix/src/TMatrixTSparse.cxx
+++ b/math/matrix/src/TMatrixTSparse.cxx
@@ -71,6 +71,7 @@
 //////////////////////////////////////////////////////////////////////////
 
 #include "TMatrixTSparse.h"
+#include "TBuffer.h"
 #include "TMatrixT.h"
 #include "TMath.h"
 
diff --git a/math/matrix/src/TMatrixTSym.cxx b/math/matrix/src/TMatrixTSym.cxx
index 221ff01ac14161042ffe250d0a43aea5494a003d..0364e7d0732b1554e5031e6563472e850a2cf98b 100644
--- a/math/matrix/src/TMatrixTSym.cxx
+++ b/math/matrix/src/TMatrixTSym.cxx
@@ -22,6 +22,7 @@
 //////////////////////////////////////////////////////////////////////////
 
 #include "TMatrixTSym.h"
+#include "TBuffer.h"
 #include "TMatrixTLazy.h"
 #include "TMatrixTSymCramerInv.h"
 #include "TDecompLU.h"
diff --git a/math/physics/src/TLorentzVector.cxx b/math/physics/src/TLorentzVector.cxx
index 403404dcad137880dba825d51d33a49b1ead467b..4ff20786f10f996e35962d4af8028ea06e2492d4 100644
--- a/math/physics/src/TLorentzVector.cxx
+++ b/math/physics/src/TLorentzVector.cxx
@@ -236,9 +236,11 @@ v *= l;&nbsp; // Attention v = l*v</TT>
 <!--*/
 // -->END_HTML
 
+#include "TLorentzVector.h"
+
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TError.h"
-#include "TLorentzVector.h"
 #include "TLorentzRotation.h"
 
 ClassImp(TLorentzVector)
diff --git a/math/physics/src/TVector3.cxx b/math/physics/src/TVector3.cxx
index 77e7365dc7bba4349b991358abcbf105f888a854..787d4ccf878feb249f9386edabd38ee9b592e872 100644
--- a/math/physics/src/TVector3.cxx
+++ b/math/physics/src/TVector3.cxx
@@ -160,6 +160,8 @@ theta plane) to the (x,y,z) frame.
 //
 
 #include "TVector3.h"
+
+#include "TBuffer.h"
 #include "TRotation.h"
 #include "TMath.h"
 #include "TClass.h"
diff --git a/misc/table/src/TTableMap.cxx b/misc/table/src/TTableMap.cxx
index f27d3c39ad395914ed099f28d57ae4672eff2030..d0e3943ef2f3c8a3e1e63236a688526a8ff1ebec 100644
--- a/misc/table/src/TTableMap.cxx
+++ b/misc/table/src/TTableMap.cxx
@@ -10,9 +10,11 @@
  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
  *************************************************************************/
 
-#include "TArrayL.h"
 #include "TTableMap.h"
 
+#include "TArrayL.h"
+#include "TBuffer.h"
+
 //////////////////////////////////////////////////////////////////////////////
 // TTableMap class is helper class to keep the list of the referencs to the
 // TTable rows and iterate over it.
diff --git a/montecarlo/eg/src/TParticle.cxx b/montecarlo/eg/src/TParticle.cxx
index dd32201d679f2fcc4b704947981da67842ee5384..331ae89ab40970f8d4e5b4766a90539e74a09544 100644
--- a/montecarlo/eg/src/TParticle.cxx
+++ b/montecarlo/eg/src/TParticle.cxx
@@ -38,12 +38,14 @@
 //
 //  TParticlePDG*  fParticlePDG;          //! reference to the particle record in PDG database
 
+#include "TParticle.h"
+
+#include "TBuffer.h"
 #include "TView.h"
 #include "TVirtualPad.h"
 #include "TPolyLine3D.h"
 #include "TParticlePDG.h"
 #include "TDatabasePDG.h"
-#include "TParticle.h"
 #include "TClass.h"
 #include "X3DBuffer.h"
 
diff --git a/proof/proofplayer/src/TStatus.cxx b/proof/proofplayer/src/TStatus.cxx
index d677e2e50ba53a6320e9bb8202b6afe2dbb7c3c5..16e35ceca753a5f44ea6425d6cfc8afd4f058919 100644
--- a/proof/proofplayer/src/TStatus.cxx
+++ b/proof/proofplayer/src/TStatus.cxx
@@ -22,6 +22,7 @@
 
 #include "TStatus.h"
 #include "Riostream.h"
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TProofDebug.h"
 
diff --git a/roofit/roofit/inc/RooCFunction1Binding.h b/roofit/roofit/inc/RooCFunction1Binding.h
index a4f07f95ff0d8eb31c07eff946ba46dab83fb26d..296c6808c6d2c01549e59943c6b096831443cfeb 100644
--- a/roofit/roofit/inc/RooCFunction1Binding.h
+++ b/roofit/roofit/inc/RooCFunction1Binding.h
@@ -13,11 +13,14 @@
 #ifndef ROOCFUNCTION1BINDING
 #define ROOCFUNCTION1BINDING
 
-#include "TString.h"
 #include "RooAbsReal.h"
 #include "RooAbsPdf.h"
 #include "RooRealProxy.h"
 #include "RooMsgService.h"
+
+#include "TBuffer.h"
+#include "TString.h"
+
 #include <string>
 #include <map>
 #include <vector>
diff --git a/roofit/roofit/inc/RooCFunction2Binding.h b/roofit/roofit/inc/RooCFunction2Binding.h
index 3b655e0928c0b7d7f549b0181987ba660e616498..17ae19c3452b9f14b7f6120532bfc643ad51ec92 100644
--- a/roofit/roofit/inc/RooCFunction2Binding.h
+++ b/roofit/roofit/inc/RooCFunction2Binding.h
@@ -13,11 +13,14 @@
 #ifndef ROOCFUNCTION2BINDING
 #define ROOCFUNCTION2BINDING
 
-#include "TString.h"
 #include "RooAbsReal.h"
 #include "RooAbsPdf.h"
 #include "RooRealProxy.h"
 #include "RooMsgService.h"
+
+#include "TBuffer.h"
+#include "TString.h"
+
 #include <string>
 #include <map>
 #include <vector>
diff --git a/roofit/roofit/inc/RooCFunction3Binding.h b/roofit/roofit/inc/RooCFunction3Binding.h
index ba287102eaf785b243f9f055c76b007789181ed7..fb42ea833cb2e6d0dc6502be55cc8b41978fb6ec 100644
--- a/roofit/roofit/inc/RooCFunction3Binding.h
+++ b/roofit/roofit/inc/RooCFunction3Binding.h
@@ -12,11 +12,14 @@
 #ifndef ROOCFUNCTION3BINDING
 #define ROOCFUNCTION3BINDING
 
-#include "TString.h"
 #include "RooAbsReal.h"
 #include "RooRealProxy.h"
 #include "RooMsgService.h"
 #include "RooAbsPdf.h"
+
+#include "TBuffer.h"
+#include "TString.h"
+
 #include <string>
 #include <map>
 #include <vector>
diff --git a/roofit/roofit/inc/RooCFunction4Binding.h b/roofit/roofit/inc/RooCFunction4Binding.h
index b4ef55921e50500b36dbabfe72da08490e32cee1..a0e0cc5c5679ac31b77cbbbc195573f33ad8ed83 100644
--- a/roofit/roofit/inc/RooCFunction4Binding.h
+++ b/roofit/roofit/inc/RooCFunction4Binding.h
@@ -13,11 +13,14 @@
 #ifndef ROOCFUNCTION4BINDING
 #define ROOCFUNCTION4BINDING
 
-#include "TString.h"
 #include "RooAbsReal.h"
 #include "RooAbsPdf.h"
 #include "RooRealProxy.h"
 #include "RooMsgService.h"
+
+#include "TBuffer.h"
+#include "TString.h"
+
 #include <string>
 #include <map>
 #include <vector>
diff --git a/roofit/roofitcore/src/RooAbsBinning.cxx b/roofit/roofitcore/src/RooAbsBinning.cxx
index 9cf7db779da635d9528b1d22d083745484bad972..172f92f27cfc797254ca9597ff59441c0f48b188 100644
--- a/roofit/roofitcore/src/RooAbsBinning.cxx
+++ b/roofit/roofitcore/src/RooAbsBinning.cxx
@@ -23,10 +23,11 @@
 //
 //
 
-#include "RooFit.h"
-
 #include "RooAbsBinning.h"
+
 #include "RooAbsReal.h"
+#include "RooFit.h"
+#include "TBuffer.h"
 #include "TClass.h"
 
 #include "Riostream.h"
diff --git a/roofit/roofitcore/src/RooAbsData.cxx b/roofit/roofitcore/src/RooAbsData.cxx
index df36ba9bb86d1825d70e49a7dba5aea6e1ef69db..20428063b634f3628ab301e1b183472913617ac2 100644
--- a/roofit/roofitcore/src/RooAbsData.cxx
+++ b/roofit/roofitcore/src/RooAbsData.cxx
@@ -25,13 +25,15 @@
 //
 //
 
+#include "RooAbsData.h"
+
 #include "RooFit.h"
 #include "Riostream.h"
 
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TMath.h"
 
-#include "RooAbsData.h"
 #include "RooAbsData.h"
 #include "RooFormulaVar.h"
 #include "RooCmdConfig.h"
diff --git a/roofit/roofitcore/src/RooLinkedList.cxx b/roofit/roofitcore/src/RooLinkedList.cxx
index 2c0a232b39462d7416945dbc355f137333c5c9b2..d8e5aa44ce4fe4280f63d59bc171587f28c8146f 100644
--- a/roofit/roofitcore/src/RooLinkedList.cxx
+++ b/roofit/roofitcore/src/RooLinkedList.cxx
@@ -26,17 +26,19 @@
 // END_HTML
 //
 
-#include <algorithm>
+#include "RooLinkedList.h"
 
 #include "RooFit.h"
-#include "Riostream.h"
-
-#include "RooLinkedList.h"
 #include "RooLinkedListIter.h"
 #include "RooHashTable.h"
 #include "RooAbsArg.h"
 #include "RooMsgService.h"
 
+#include "Riostream.h"
+#include "TBuffer.h"
+
+#include <algorithm>
+
 using namespace std;
 
 ClassImp(RooLinkedList)
diff --git a/roofit/roofitcore/src/RooMappedCategory.cxx b/roofit/roofitcore/src/RooMappedCategory.cxx
index 14cacd011a0e869fc9630c52e7fcb88541df4054..6907969e5042b064e960c2b4cb530d4543466b70 100644
--- a/roofit/roofitcore/src/RooMappedCategory.cxx
+++ b/roofit/roofitcore/src/RooMappedCategory.cxx
@@ -23,15 +23,18 @@
 // output state label.
 
 
+#include "RooMappedCategory.h"
+
 #include "RooFit.h"
+#include "RooStreamParser.h"
+#include "RooMsgService.h"
 
 #include "Riostream.h"
+#include "TBuffer.h"
+#include "TString.h"
+
 #include <stdlib.h>
 #include <stdio.h>
-#include "TString.h"
-#include "RooMappedCategory.h"
-#include "RooStreamParser.h"
-#include "RooMsgService.h"
 
 using namespace std ;
 
diff --git a/tree/tree/inc/TTree.h b/tree/tree/inc/TTree.h
index f67a791842022f1f4134126e18d80682e46c4a54..a9a975477b27bac3980acc3fa6bfacde2f6a6413 100644
--- a/tree/tree/inc/TTree.h
+++ b/tree/tree/inc/TTree.h
@@ -54,6 +54,10 @@
 #include "TArrayI.h"
 #endif
 
+#ifndef ROOT_TBuffer
+#include "TBuffer.h"
+#endif
+
 #ifndef ROOT_TDataType
 #include "TDataType.h"
 #endif
diff --git a/tree/tree/src/TBasket.cxx b/tree/tree/src/TBasket.cxx
index 4709e5fa011bc9b5495d76e663d24c551c1127cf..6f0e450cacbc139fc861ee82f32b073dbce99aea 100644
--- a/tree/tree/src/TBasket.cxx
+++ b/tree/tree/src/TBasket.cxx
@@ -9,6 +9,7 @@
  *************************************************************************/
 
 #include "TBasket.h"
+#include "TBuffer.h"
 #include "TBufferFile.h"
 #include "TTree.h"
 #include "TBranch.h"
diff --git a/tree/tree/src/TBasketSQL.cxx b/tree/tree/src/TBasketSQL.cxx
index 76df1a2c8aff3c984563a739d862c3548ed8dde0..4771a380ca3b368edda2b18c4568d1c96898f2ed 100644
--- a/tree/tree/src/TBasketSQL.cxx
+++ b/tree/tree/src/TBasketSQL.cxx
@@ -13,6 +13,7 @@
 #define TBASKETSQL_CXX
 
 #include "TBasket.h"
+#include "TBuffer.h"
 #include "TTree.h"
 #include "TBranch.h"
 #include "TFile.h"
diff --git a/tree/tree/src/TBranch.cxx b/tree/tree/src/TBranch.cxx
index 2e09cdba2f7a68476025c637299d5c994904899a..62982319c5db1be00b5497550bc5fd6707fab763 100644
--- a/tree/tree/src/TBranch.cxx
+++ b/tree/tree/src/TBranch.cxx
@@ -15,6 +15,7 @@
 #include "TBasket.h"
 #include "TBranchBrowsable.h"
 #include "TBrowser.h"
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TBufferFile.h"
 #include "TClonesArray.h"
diff --git a/tree/tree/src/TBranchObject.cxx b/tree/tree/src/TBranchObject.cxx
index 0a51e397986cb9465b003dd909edae4807e6664d..4e118d1590374fd53a8efc8480c78abcf9fff127 100644
--- a/tree/tree/src/TBranchObject.cxx
+++ b/tree/tree/src/TBranchObject.cxx
@@ -18,6 +18,7 @@ A Branch for the case of an object.
 #include "TBasket.h"
 #include "TBranchClones.h"
 #include "TBrowser.h"
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TClonesArray.h"
 #include "TDataMember.h"
diff --git a/tree/tree/src/TBranchRef.cxx b/tree/tree/src/TBranchRef.cxx
index 61d87faffbd6140d9c7f52caf18a02cd1f4975b4..b780642088d2682848dfd481b3954cb0c6cad4db 100644
--- a/tree/tree/src/TBranchRef.cxx
+++ b/tree/tree/src/TBranchRef.cxx
@@ -30,6 +30,7 @@ TObjArray.
 */
 
 #include "TBranchRef.h"
+#include "TBuffer.h"
 #include "TTree.h"
 #include "TBasket.h"
 #include "TFile.h"
diff --git a/tree/tree/src/TBranchSTL.cxx b/tree/tree/src/TBranchSTL.cxx
index 2fee6c486e1ba96ad1ba485931a208fbe1435805..3432ac69275c68d8285d01b5a142acbd0a94b36f 100644
--- a/tree/tree/src/TBranchSTL.cxx
+++ b/tree/tree/src/TBranchSTL.cxx
@@ -7,6 +7,7 @@ sets and multisets) while storing them in split mode.
 */
 
 #include "TBranchSTL.h"
+#include "TBuffer.h"
 #include "TList.h"
 #include "TBranchElement.h"
 #include "TBasket.h"
diff --git a/tree/tree/src/TChainElement.cxx b/tree/tree/src/TChainElement.cxx
index 10ea2690032d520f68d7e7303ed372a103ab2d25..09dde99ad1cab854ae9c760799c3d7573a84a00f 100644
--- a/tree/tree/src/TChainElement.cxx
+++ b/tree/tree/src/TChainElement.cxx
@@ -13,8 +13,9 @@
 A TChainElement describes a component of a TChain.
 */
 
-#include "TTree.h"
 #include "TChainElement.h"
+#include "TBuffer.h"
+#include "TTree.h"
 #include "Riostream.h"
 #include "TROOT.h"
 
diff --git a/tree/tree/src/TEntryListFromFile.cxx b/tree/tree/src/TEntryListFromFile.cxx
index bb727058de75bf44c76a0ed8b5b91e90a4cef7d2..b8a2c2bb113008971566590c35823c2b6075da00 100644
--- a/tree/tree/src/TEntryListFromFile.cxx
+++ b/tree/tree/src/TEntryListFromFile.cxx
@@ -30,6 +30,7 @@ list.
 */
 
 #include "TEntryListFromFile.h"
+#include "TBuffer.h"
 #include "TObjArray.h"
 #include "TFile.h"
 #include "TKey.h"
diff --git a/tree/tree/src/TFriendElement.cxx b/tree/tree/src/TFriendElement.cxx
index 3d95088bf938ec54af7cddc4d269fef6e6722cf2..b5dea80386e1cc04fe499ff9cb86fd8979acb83a 100644
--- a/tree/tree/src/TFriendElement.cxx
+++ b/tree/tree/src/TFriendElement.cxx
@@ -22,8 +22,9 @@ To add a TFriendElement to an existing TTree T, do:
 See TTree::AddFriend for more information.
 */
 
-#include "TTree.h"
 #include "TFriendElement.h"
+#include "TBuffer.h"
+#include "TTree.h"
 #include "TFile.h"
 #include "TROOT.h"
 
diff --git a/tree/tree/src/TLeafB.cxx b/tree/tree/src/TLeafB.cxx
index 726f788fcd2f723fb1eacba792b64dfb836b866e..8e38534986ed478ae6ad743988050cba08c70a0e 100644
--- a/tree/tree/src/TLeafB.cxx
+++ b/tree/tree/src/TLeafB.cxx
@@ -15,6 +15,7 @@ A TLeaf for an 8 bit Integer data type.
 
 #include "TLeafB.h"
 #include "TBranch.h"
+#include "TBuffer.h"
 #include "TClonesArray.h"
 #include "Riostream.h"
 
diff --git a/tree/tree/src/TLeafD.cxx b/tree/tree/src/TLeafD.cxx
index d4cb0ac85d173a31ca9de6d9461f29df7d869abe..b3970daadf7ffb133ec82ad06b654c3449600d52 100644
--- a/tree/tree/src/TLeafD.cxx
+++ b/tree/tree/src/TLeafD.cxx
@@ -15,6 +15,7 @@ A TLeaf for a 64 bit floating point data type.
 
 #include "TLeafD.h"
 #include "TBranch.h"
+#include "TBuffer.h"
 #include "TClonesArray.h"
 #include "Riostream.h"
 
diff --git a/tree/tree/src/TLeafF.cxx b/tree/tree/src/TLeafF.cxx
index d7210e6d003d4f8d192f54a4896c883370bac27f..f21bcb80c3b643774277a3d3a81f8171764461e7 100644
--- a/tree/tree/src/TLeafF.cxx
+++ b/tree/tree/src/TLeafF.cxx
@@ -15,6 +15,7 @@ A TLeaf for a 32 bit floating point data type.
 
 #include "TLeafF.h"
 #include "TBranch.h"
+#include "TBuffer.h"
 #include "TClonesArray.h"
 #include "Riostream.h"
 
diff --git a/tree/tree/src/TLeafI.cxx b/tree/tree/src/TLeafI.cxx
index b32fb5e10ffc90dea7623133e3dc9191ee59f095..5c46f64785d3a46ca9da278bb721acfd6d42ac3e 100644
--- a/tree/tree/src/TLeafI.cxx
+++ b/tree/tree/src/TLeafI.cxx
@@ -15,6 +15,7 @@ A TLeaf for an Integer data type.
 
 #include "TLeafI.h"
 #include "TBranch.h"
+#include "TBuffer.h"
 #include "TClonesArray.h"
 #include "Riostream.h"
 
diff --git a/tree/tree/src/TLeafL.cxx b/tree/tree/src/TLeafL.cxx
index 72ec09cf2ba009a8fb3e0b35fe061f2c66d4620a..189e38d45c0d62b52be791ab8448e9c17958103d 100644
--- a/tree/tree/src/TLeafL.cxx
+++ b/tree/tree/src/TLeafL.cxx
@@ -15,6 +15,7 @@ A TLeaf for a 64 bit Integer data type.
 
 #include "TLeafL.h"
 #include "TBranch.h"
+#include "TBuffer.h"
 #include "TClonesArray.h"
 #include "Riostream.h"
 
diff --git a/tree/tree/src/TLeafO.cxx b/tree/tree/src/TLeafO.cxx
index 38cd857cde5e981dd48b665ab9cfd0c087626bab..a3c48b3d242c68761fb3f96eca47debb1eb4dcb0 100644
--- a/tree/tree/src/TLeafO.cxx
+++ b/tree/tree/src/TLeafO.cxx
@@ -15,6 +15,7 @@ A TLeaf for a bool data type.
 
 #include "TLeafO.h"
 #include "TBranch.h"
+#include "TBuffer.h"
 #include "TClonesArray.h"
 #include "Riostream.h"
 
diff --git a/tree/tree/src/TLeafObject.cxx b/tree/tree/src/TLeafObject.cxx
index f840cfa5f495ffea091f286a4479d68e60ce4f54..ddcd38ea26d5b63392433b06f3fbb3dd239a725f 100644
--- a/tree/tree/src/TLeafObject.cxx
+++ b/tree/tree/src/TLeafObject.cxx
@@ -15,6 +15,7 @@ A TLeaf for a general object derived from TObject.
 
 #include "TLeafObject.h"
 #include "TBranch.h"
+#include "TBuffer.h"
 #include "TClass.h"
 #include "TMethodCall.h"
 #include "TDataType.h"
diff --git a/tree/tree/src/TLeafS.cxx b/tree/tree/src/TLeafS.cxx
index 36cd7cd928e16e824d95fe257adcc4192a8a75d3..58f61b85a6fa4a337f94e77f8168c33ecbad7b6d 100644
--- a/tree/tree/src/TLeafS.cxx
+++ b/tree/tree/src/TLeafS.cxx
@@ -15,6 +15,7 @@ A TLeaf for a 16 bit Integer data type.
 
 #include "TLeafS.h"
 #include "TBranch.h"
+#include "TBuffer.h"
 #include "TClonesArray.h"
 #include "Riostream.h"
 
diff --git a/tree/tree/src/TNtuple.cxx b/tree/tree/src/TNtuple.cxx
index 5688a648cc5fa2ec0e9d505e62667c2519b9773b..a46bc71ec29aff6fbe7812f435a6e7ae1be306b3 100644
--- a/tree/tree/src/TNtuple.cxx
+++ b/tree/tree/src/TNtuple.cxx
@@ -10,6 +10,7 @@
  *************************************************************************/
 
 #include "TNtuple.h"
+#include "TBuffer.h"
 #include "TTree.h"
 #include "TBranch.h"
 #include "TLeaf.h"
diff --git a/tree/tree/src/TTreeRow.cxx b/tree/tree/src/TTreeRow.cxx
index 4a7f52e104d5aa754c0b2255a8d43753612994b3..75a83a6e02925a883eec8f235b68fc6d38d0afbc 100644
--- a/tree/tree/src/TTreeRow.cxx
+++ b/tree/tree/src/TTreeRow.cxx
@@ -17,6 +17,7 @@ Related classes are TTreeResult.
 */
 
 #include "TTreeRow.h"
+#include "TBuffer.h"
 #include "TObjArray.h"
 
 ClassImp(TTreeRow)