som necessary internal funcs