top level architecture