struct using closure, break ref and extension methods