added new exeption classes, reorganized