shorten
more
inline smaller auxiliary functions