first working version
more examples
nice style