def call(a, b = nil, c = nil)
      if block
        self.send method, *[a, b, c].compact + args, &block
      else
        self.send method, *[a, b, c].compact + args
      end
    end
def call(a, b = nil, c = nil)
      if block
        self.send method, *[a, b, c].compact + args, &block
      else
        self.send method, *[a, b, c].compact + args
      end
    end
order of params to be called can differ, so naming is ambiguous