refactor some structure and begin to parse + - *