try-catch, and some options added, updated requirements