reduce consuption of callstack