top level data first