gracefully return if we have no data, instead of accessing slice out-of-bounds