Initial IMP
Add gitignore
Refactoring
Some documentations
Some tests