* better explanation and more examples in article