adapt operate() to take >=2 arguments

this is not a finished implementation