refactoring throw->shot