add the ability to return structs