essential for function