refactoring
fix bug