Contributed by Connary Fagen
Contributed by thiago benato
Contributed by Pierre Brossard
Contributed by xun tie