Added own Exceptions & some enhancement