various additional functions and methods