functional for actual use