done 1st version partial support (need more test)