without descending in C/C++ ickiness