This feels expensive once we get over a few contacts - assuming we're reversing the array twice, then that seems unnecessary. Why do we need to do this?