initial functionality, added exceptions