docs: def scramble(expnums, ccd, version='p', dry_run=False):
      """run the plant script on this combination of exposures"""
  
      mjds = []
      fobjs = []
      for expnum in expnums:
          filename = storage.get_image(expnum, ccd=ccd, version=version)
          fobjs.append(fits.open(filename))
          # Pull out values to replace in headers.. must pull them
          # as otherwise we get pointers...
          mjds.append(fobjs[-1][0].header['MJD-OBS'])
  
      order = [0, 2, 1]
      for idx in range(len(fobjs)):
          logging.info("Flipping %d to %d" % (fobjs[idx][0].header['EXPNUM'],
                                              expnums[order[idx]]))
          fobjs[idx][0].header['EXPNUM'] = expnums[order[idx]]
          fobjs[idx][0].header['MJD-OBS'] = mjds[order[idx]]
          uri = storage.get_uri(expnums[order[idx]],
                                ccd=ccd,
                                version='s',
                                ext='fits')
          fname = os.path.basename(uri)
          if os.access(fname, os.F_OK):
              os.unlink(fname)
          fobjs[idx].writeto(fname)
          if dry_run:
              continue
          storage.copy(fname, uri)
  
      return