2.0

1. refactor
2. fix bugs