Author: Andrianarivelo Rafrezy, Vincent.