update some dependencies
small refactoring, add some doc