moved non-essential functions to this module [ci skip]