add some try catch