- added documentation to better understanding