use exceptions cause we can - add some checker functions