dev: move more code into Shot class