finaly very nice exception handling