Function signatures for snap callbacks used `const` incorrectly which was hidden by casting function types. This made it seem as if the input arguments wouldn't be change and wouldn't be initialized. Name return arguments with an `r_` prefix, order them last, remove function casts and correct `const` usage.