add exceptions handing