better architecture of the components