added system diagram