reorganize
more try-catch