Author: Michel Orradre Library.