headers should be final, and rows should be volatile (or final with the necessary change in setRows to clear and add-all within a synch block)