- added documentation
 - added exceptions