"Statics" get turned into object instances when the number of parameters used to transport state becomes an issue. The alternative then is to create the object; "modify it"; then fire it off. You then might find it is re-useable after all. I like delegates for inserting custom logic in an inner loop (action delegate); or adding a "where" function delegate to a LINQ query that can be called by many different callers. But this also evolves over time as patterns become more evident.