added architecture diagram