now using an empty array instead of nil to indicate the end of the rows command, for easier unpacking