basic required func