refactored NlService