required functions