Small step improve
Refactory
Add throw new exp
test
Merge