taking care of all different elements