functional for the initial purpose