Use option rather than class to distinguish different type
Merge branch 'master' of github.com:michael911009/HUSTThesis