function RemoveSpots(clip clp, int "limit", bool "_grey")
{
  _grey   = Default(_grey, false)
  limit   = Default(limit, 16)
  
  clmode  = 17

  clensed = Clense(clp, grey=_grey, cache=4)
  sbegin  = ForwardClense(clp, grey=_grey, cache=-1)
  send    = BackwardClense(clp, grey=_grey, cache=-1)
  alt     = Repair(SCSelect(clp, sbegin, send, clensed, debug=true), clp, mode=limit, modeU = _grey ? -1 : limit)
  restore = Repair(clensed, clp, mode=limit, modeU = _grey ? -1 : limit)
  clp     = RestoreMotionBlocks(clensed, restore, neighbour=clp, alternative=alt, gmthreshold=70, dist=1, \
                                dmode=2, debug=false, noise=10, noisy=12, grey=_grey)
  
  return clp
}