refactor shot class