Source: http://personales.unican.es/corcuerp/ProgCpp/slides/1Integrated_early.pdf