added high level architecture