added documentation and the demo