Switched from tuple to struct as it makes wrapper APIs less awkward