- added exceptions
 - added documentation