Created by Ibrahim Obeidat
Contributed by alex piacentini
Contributed by Hugo Richel
Contributed by Seifeldeen Elfouly