updated ncj function