creating the general architecture