added exception classes
updated implementation with passing tests
initial exception classes