revert making @params stateful and pass it into #process. reason: allow doing stuff like params = params[:song], which would otherwise fail due to some weirdness.
in Op#process you can now use #invalid!(result) to mark the operation as invalid.