don't raise Exception - use custom exception classes