diagram(not finish)