refactor some and stop rescuing