some refactor parser