utils functions are private