ready to refactor using ndm