Amazing idea and pretty good implementation but it is quite hard to understand what is going on at the start