follow deepjs refactoring and clean