updated with NLS