Author: Danny Weyns,H. Van Dyke Parunak,Fabien Michel