move back to using structs for holding results