This is not my original idea, just some prototypes written on several languages