avoid using try-catch