refactor the descriptor module implementation