------ ---------000000----00000-----00000------00000----0000 -------0000---000---000---000---000---000---000---00 -----0000000---------------000000000--------