Added custom Exception Class & changed the API with the __call method for flexibility