add exceptions, change tests