with fucntions to build new components