added exceptions, start work on implicit