the callback block parameter now returns an immutable struct