invoke, not pass, to remain linear