use chaining and catching errors