http://www.perezmedia.net/ceruleanarc/2015/img20130519_img20130519sg06-Diagram_Alg.jpg