use difference high level struct