better works with exceptions